真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

sqlserver收支表,Sqlserver建表語句

SQL語言的=ALL怎么用,WHERE子句中的。 是指集合包含的關(guān)系么?如果是誰包含誰

ALL不和=直接使用的, ANY才和=使用的,表示只要滿足集合里面的一個(gè)條件就可以了

創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為南開企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,南開網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

ALL 一般是用於 ,=, ,=,常用來表示大于(小于)某個(gè)集合的所有元素。

譬如

SELECT sno

FROM tab

WHERE age =(55, 66, 77)是說年齡必須大于集合{55,66,77}的所有元素55 66 77

Clear now?

兩個(gè)集合比較,可以用IN

SELECT *

FROM student

WHERE sno IN (Select sno from sc where cno = 'c001')

這個(gè)就是集合包含關(guān)系的一個(gè)最經(jīng)典的例子。

子查詢里面是選修了001課程的學(xué)生

sno in是凡是包含在 --〉選修了001課程的學(xué)生集合里面

沒有達(dá)不到的,只有你想不到的

學(xué)生所選的課程集合要正好等于 課程集合

SELECT *

FROM SC

GROUP BY sno

HAVING COUNT(c_id) = (select count(*) from C)。 這樣就達(dá)到目標(biāo)了

SQL很靈活的,實(shí)際開發(fā)當(dāng)中很少有人用ALL ANY的

怎么用SQL語句對(duì)表【收支表】進(jìn)行分類匯總?

--建立測(cè)試表 并插入數(shù)據(jù)

-- 執(zhí)行一個(gè)查詢 ,你可以寫在一個(gè)存儲(chǔ)過程里面,我困了,不過格式按照你說的寫好了

CREATE?TABLE?TB?

(說明?NVARCHAR(20)

,

類別?NVARCHAR(20),

金額?INT?,

款項(xiàng)類別?NVARCHAR(20)

)

INSERT?INTO?dbo.TB

(?說明,?類別,?金額,?款項(xiàng)類別?)

VALUES??(?N'項(xiàng)目A',?--?說明?-?nvarchar(20)

N'支出',?--?類別?-?nvarchar(20)

900,?--?金額?-?int

N'費(fèi)用B'??--?款項(xiàng)類別?-?nvarchar(20)

)

INSERT?INTO?dbo.TB

(?說明,?類別,?金額,?款項(xiàng)類別?)

VALUES??(?N'項(xiàng)目A',?--?說明?-?nvarchar(20)

N'收入',?--?類別?-?nvarchar(20)

2000,?--?金額?-?int

N'收入A'??--?款項(xiàng)類別?-?nvarchar(20)

)

INSERT?INTO?dbo.TB

(?說明,?類別,?金額,?款項(xiàng)類別?)

VALUES??(?N'項(xiàng)目B',?--?說明?-?nvarchar(20)

N'支出',?--?類別?-?nvarchar(20)

3500,?--?金額?-?int

N'費(fèi)用C'??--?款項(xiàng)類別?-?nvarchar(20)

)

INSERT?INTO?dbo.TB

(?說明,?類別,?金額,?款項(xiàng)類別?)

VALUES??(?N'項(xiàng)目C',?--?說明?-?nvarchar(20)

N'支出',?--?類別?-?nvarchar(20)

200,?--?金額?-?int

N'費(fèi)用D'??--?款項(xiàng)類別?-?nvarchar(20)

)

INSERT?INTO?dbo.TB

(?說明,?類別,?金額,?款項(xiàng)類別?)

VALUES??(?N'項(xiàng)目A',?--?說明?-?nvarchar(20)

N'支出',?--?類別?-?nvarchar(20)

300,?--?金額?-?int

N'費(fèi)用A'??--?款項(xiàng)類別?-?nvarchar(20)

)

CREATE?TABLE?#temp

(

說明?NVARCHAR(20)?,

類別?NVARCHAR(20)?,

金額?INT?,

款項(xiàng)類別?NVARCHAR(20)

)

INSERT??INTO?#temp

SELECT??*

FROM????dbo.TB

UNION?ALL

SELECT??說明?,

CASE?WHEN?說明?IS?NOT??NULL?THEN?ISNULL(類別,?'收支凈值')

ELSE?類別

END?+?'合計(jì)'?AS?類別?,

SUM(CASE?WHEN?類別?=?'收入'?THEN?金額

ELSE?-金額

END)?AS?金額?,

MAX(款項(xiàng)類別)?AS?款項(xiàng)類別

FROM????TB

WHERE???說明?IS?NOT?NULL

GROUP?BY?ROLLUP(說明,?類別)

ORDER?BY?說明?

INSERT??#temp

SELECT??B.*

FROM????(?SELECT?DISTINCT

說明?,

'收入合計(jì)'?AS?類別?,

0?AS?金額?,

''?AS?款項(xiàng)類別

FROM??????#temp

WHERE?????說明?IS?NOT?NULL

)?B

WHERE???B.說明?+?B.類別?NOT?IN?(?SELECT?說明?+?類別

FROM???#temp

WHERE??說明?IS?NOT?NULL?)

INSERT??#temp

SELECT??B.*

FROM????(?SELECT?DISTINCT

說明?,

'支出合計(jì)'?AS?類別?,

0?AS?金額?,

''?AS?款項(xiàng)類別

FROM??????#temp

WHERE?????說明?IS?NOT?NULL

)?B

WHERE???B.說明?+?B.類別?NOT?IN?(?SELECT?說明?+?類別

FROM???#temp

WHERE??說明?IS?NOT?NULL?);

WITH????tt

AS?(?SELECT???說明?,

類別?,

CASE?WHEN?類別?=?'支出合計(jì)'?THEN?ABS(金額)

ELSE?金額

END?AS?金額?,

CASE?WHEN?類別?=?'收入'

OR?類別?=?'支出'?THEN?款項(xiàng)類別

ELSE?''

END?AS?款項(xiàng)類別?,

CASE?WHEN?類別?=?'支出'?THEN?1

WHEN?類別?=?'收入'?THEN?2

WHEN?類別?=?'收入合計(jì)'?THEN?3

WHEN?類別?=?'支出合計(jì)'?THEN?4

WHEN?類別?=?'收支凈值合計(jì)'?THEN?5

ELSE?6

END?AS?num

FROM?????#temp

WHERE????說明?IS?NOT?NULL

)

SELECT??tt.說明?,

tt.類別?,

tt.金額?,

tt.款項(xiàng)類別

FROM????tt

ORDER?BY?說明?,

num???

DROP?TABLE?#temp

sql語句比較兩個(gè)月的數(shù)據(jù)?

怎么改題目了?搞的我還把開始的要求給算出來了,如下:

select

a.月份,

a.本月收入總額,

case when b.本月收入總額=0 or b.本月收入總額 IS null then null else

(a.本月收入總額-b.本月收入總額)/b.本月收入總額*100 end 收入增長百分比,

a.本月支出總額,

case when b.本月支出總額=0 or b.本月支出總額 IS null then null else

(a.本月支出總額-b.本月支出總額)/b.本月支出總額*100 end 支出增長百分比,

a.本月余額,

case when b.本月余額=0 or b.本月余額 IS null then null else

(a.本月余額-b.本月余額)/b.本月余額*100 end 余額增長百分比

from

(

select

MONTH(日期) 月份,

isnull(SUM(收入金額),0) 本月收入總額,

isnull(SUM(支出金額),0) 本月支出總額,

isnull(SUM(收入金額),0)-isnull(SUM(支出金額),0) 本月余額

from 收支表

group by MONTH(日期)

) a

left join

(

select

MONTH(日期) 月份,

isnull(SUM(收入金額),0) 本月收入總額,

isnull(SUM(支出金額),0) 本月支出總額,

isnull(SUM(收入金額),0)-isnull(SUM(支出金額),0) 本月余額

from 收支表

group by MONTH(日期)

) b

on a.月份=b.月份+1

order by a.月份 desc

搞到最后才發(fā)現(xiàn)你是ACCESS數(shù)據(jù)庫,暈死,那以上SQL Server 代碼可能有些地方要修改

比如:case when then else end語句,不知ACCESS是否支持;

left join可能要改成left outer join;

isnull()函數(shù),不知access是否支持;

month()函數(shù),不知access是否支持;

用ACCESS完成這么復(fù)雜的運(yùn)算,的確困難.

補(bǔ)充,用case主要是用來排除0和空值,比如,你6月份的收入為0,7月份的收入3500,那么收入增長百分比就是3500/0,結(jié)果是無窮大,你在ACCESS中怎么排除這種情況?


分享名稱:sqlserver收支表,Sqlserver建表語句
網(wǎng)站網(wǎng)址:http://weahome.cn/article/hdpshp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部