9 回答

TA貢獻1872條經(jīng)驗 獲得超4個贊
NID? NUMBER?Y??? ?? 工號ID
NNAME? VARCHAR2(20)?Y??? 員工姓名
NPART? NUMBER?Y??? ??? 所屬部門
ADDRESS? VARCHAR2(20)?Y??? 地址
NMOENY? sNUMBER?Y??? ??? 金額
?
Select NID,NName,sum(NMoeny) from ABC Where NPart=部門 Group by Address,NID,NName

TA貢獻1813條經(jīng)驗 獲得超2個贊
想完全達到你的顯示結(jié)果僅僅靠sql是實現(xiàn)不了的,你這個能夠做的就是用動態(tài)sql統(tǒng)計出按照部門分組的數(shù)據(jù)。

TA貢獻1851條經(jīng)驗 獲得超3個贊
可以根據(jù)查詢條件動態(tài)生成sql語句,不過這樣就沒有辦法利用sql緩存,如果數(shù)據(jù)量比較大就會很慢。
建議:
根據(jù)不同的查詢條件,比如按部門統(tǒng)計,按員工統(tǒng)計,按地區(qū)統(tǒng)計等等情況,分別創(chuàng)建相應(yīng)的存儲過程,然后在程序中判斷用戶選擇的查詢條件,確定調(diào)用哪個存儲過程來執(zhí)行查詢。

TA貢獻1835條經(jīng)驗 獲得超7個贊
下面是按只有兩個地區(qū)的sql ,如果超出兩個地區(qū),我想只能在存儲過程里寫了
select gonghao,max(xingming) xingming ,max(cnum) cnum,max(sjine) sjine,min(cnum) mnum,min(sjine) mjine from
(SELECT diqu, gonghao,max(xingming) as xingming,count(gonghao) as cnum,sum(jine) as sjine
? FROM [SCTest].[dbo].[test1]
where bumen = 1
group by gonghao,diqu) as tab1
group by gonghao
表:
1?? ?1?? ?name1?? ?dress1?? ?5
1?? ?1?? ?name1?? ?dress1?? ?2
1?? ?1?? ?name1?? ?dress2?? ?6
2?? ?2?? ?name2?? ?dress1?? ?6
2?? ?2?? ?name2?? ?dress2?? ?2
2?? ?2?? ?name2?? ?dress2?? ?3
1?? ?3?? ?name3?? ?dress1?? ?9
1?? ?3?? ?name3?? ?dress2?? ?10
結(jié)果:
1?? ?name1?? ?2?? ?7?? ?1?? ?6
3?? ?name3?? ?1?? ?10?? ?1?? ?9
- 9 回答
- 0 關(guān)注
- 574 瀏覽
添加回答
舉報