2013-03-11 24 views
0
A B C D  
12426 4 1 KT1217V 
12426 4 1 KT1218V 
12428 3 1 KT1217V 
12428 3 1 KT1218V 
12430 3 1 KT1217V 
12430 3 1 KT1218V 
12431 3 1 KT1217V 
12431 3 1 KT1218V 
12434 3 1 KT1217V 
12434 3 1 KT1218V 
12439 8 1 KT1217V 
12439 8 1 KT1218V 
12440 1 1 KT1217V 
12440 1 1 KT1218V 
12442 8 1 KT1217V 
12442 8 1 KT1218V 
12443 8 1 KT1217V 
12443 8 1 KT1218V 

值新紀錄:如果總和超過顯示與我正在尋找這樣的結果留在下一行

KT1217V  12426,12428 ..... 
KT1218  12426,12428,12431 
KT1218  12434,12439 

,直到列B的相加值< 5,如果總和超過> 5 秀的相同與值的新記錄左 其中c = 1

我寫的查詢,以獲得值<或>總和(B欄),但無法顯示用剩值列A相同的新記錄的列d

select D, 
(select a.A+',' from table1 a where a.D = b.D for XML PATH ('')) 
from table1 b 
WHERE c = 1 
group by D 
HAVING SUM(B)<5 
ORDER BY D 
+2

請顯示您自己的努力。這不是一個「寫我的代碼給我」的網站。 – Tomalak 2013-03-11 12:07:50

+0

你可以通過使用遊標來實現這個功能:逐行讀取並插入到臨時表中並顯示該表... – Sachin 2013-03-11 12:16:23

回答

0

您需要使用LISTAGG(),如同SELECT A,LISTAGG(D,',')WITHIN GROUP(ORDER BY D)。在Oracle中沒有a.A +','或XML PATH('')這樣的東西...

+0

此查詢是針對SQL Server的,我很驚訝沒有人想出解決方案呢... – user2156635 2013-03-11 14:00:47

+0

對不起,由於某種原因,我雖然查詢是爲Oracle ...請標記您的問題 - 添加sql服務器標記。 – Art 2013-03-11 14:23:44

相關問題