sql多條件查詢匯總,我想將匯總資料顯示在每條明細資料的最后一列,跪求各位大神。條件:當id、le都相同時匯總amt,匯總資料顯示在每條明細資料的最后一列。group by 會將資料匯總,不能顯示全部明細資料。謝謝
ID LE TI amt
1 10 1 11
1 10 2 11
2 10 3 22
2 10 4 22
3 10 5 33
3 11 6 3
4 11 7 23
4 11 8 33
4 10 9 12
輸出結果:
ID LE TI amt 金額匯總
1 10 1 11 22
1 10 2 11 22
2 10 3 22 44
2 10 4 22 44
3 10 5 33 33
3 11 6 3 3
4 11 7 23 56
4 11 8 33 56
4 10 9 12 12
uj5u.com熱心網友回復:
SELECT *FROM TABLE A
JOIN (SELECT ID,LE SUM(AMT) AS TOTAL FROM TABLE GROUP BY ID,LE) AS B ON A.ID=B.ID AND A.LE=B.LE
uj5u.com熱心網友回復:
成功了。謝謝大神
uj5u.com熱心網友回復:
還想請問一下,如果我想把這個查詢結果保存到資料庫新表,怎么加into 陳述句喃?總是報錯
uj5u.com熱心網友回復:
SELECT A.*, TOTALINTO NEW_TB
FROM OLD_TB A
JOIN (SELECT ID,LE, SUM(AMT) AS TOTAL FROM OLD_TB GROUP BY ID,LE) AS B ON A.ID=B.ID AND A.LE=B.LE
uj5u.com熱心網友回復:
開窗函式,請了解一下資料表后面加一列群組后的sum,這個絕對適合你
uj5u.com熱心網友回復:
SELECT A.*, TOTAL
INTO NEW_TB
FROM OLD_TB A
JOIN (SELECT ID,LE, SUM(AMT) AS TOTAL FROM OLD_TB GROUP BY ID,LE) AS B ON A.ID=B.ID AND A.LE=B.LE
你好,這個查詢陳述句在sql Server中執行沒有問題,但在toad for oracle 中一直報錯提示:found ’B’:expecting:OF
uj5u.com熱心網友回復:
開窗函式,請了解一下資料表后面加一列群組后的sum,這個絕對適合你
謝謝賜教,受益匪淺
uj5u.com熱心網友回復:
開窗函式,請了解一下資料表后面加一列群組后的sum,這個絕對適合你
SELECT jy0.*,SUM(ORG_AMT)
over (partition by ID_NO,LEND_FLAG,TSF_FLAG,dates) as s
um1
from jy0
where TSF_FLAG=10 and sum1>=50000
or ACC_TYPE=11 and TSF_FLAG=11 and sum1>=500000
or ACC_TYPE=12 and TSF_FLAG=11 and sum1>=2000000
大神,幫我看看我的開窗函式和where搭配使用,老是報錯“sum1”識別符號無效。
uj5u.com熱心網友回復:
這樣呢?select * from
(
SELECT jy0.*,SUM(ORG_AMT)
over (partition by ID_NO,LEND_FLAG,TSF_FLAG,dates) as sum1
from jy0
) as t
where (t.TSF_FLAG=10 and t.sum1>=50000)
or (t.ACC_TYPE=11 and t.TSF_FLAG=11 and t.sum1>=500000)
or (t.ACC_TYPE=12 and t.TSF_FLAG=11 and t.sum1>=2000000)
uj5u.com熱心網友回復:
把as去掉試試。uj5u.com熱心網友回復:
這樣呢?
select * from
(
SELECT jy0.*,SUM(ORG_AMT)
over (partition by ID_NO,LEND_FLAG,TSF_FLAG,dates) as sum1
from jy0
) as t
where (t.TSF_FLAG=10 and t.sum1>=50000)
or (t.ACC_TYPE=11 and t.TSF_FLAG=11 and t.sum1>=500000)
or (t.ACC_TYPE=12 and t.TSF_FLAG=11 and t.sum1>=2000000)
成功了。非常感謝
uj5u.com熱心網友回復:
把as去掉試試。
解決了,謝謝
uj5u.com熱心網友回復:
這樣呢?
select * from
(
SELECT jy0.*,SUM(ORG_AMT)
over (partition by ID_NO,LEND_FLAG,TSF_FLAG,dates) as sum1
from jy0
) as t
where (t.TSF_FLAG=10 and t.sum1>=50000)
or (t.ACC_TYPE=11 and t.TSF_FLAG=11 and t.sum1>=500000)
or (t.ACC_TYPE=12 and t.TSF_FLAG=11 and t.sum1>=2000000)
但是感覺開窗函式和鏈接查詢比較,開窗函式查詢速度慢很多啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8369.html
標籤:疑難問題
上一篇:面試題求幫忙解決(急)
