9 回答

TA貢獻1872條經驗 獲得超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貢獻1851條經驗 獲得超3個贊
可以根據查詢條件動態生成sql語句,不過這樣就沒有辦法利用sql緩存,如果數據量比較大就會很慢。
建議:
根據不同的查詢條件,比如按部門統計,按員工統計,按地區統計等等情況,分別創建相應的存儲過程,然后在程序中判斷用戶選擇的查詢條件,確定調用哪個存儲過程來執行查詢。

TA貢獻1835條經驗 獲得超7個贊
下面是按只有兩個地區的sql ,如果超出兩個地區,我想只能在存儲過程里寫了
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
結果:
1?? ?name1?? ?2?? ?7?? ?1?? ?6
3?? ?name3?? ?1?? ?10?? ?1?? ?9
- 9 回答
- 0 關注
- 578 瀏覽
添加回答
舉報