2012-07-16 130 views
1

我試圖達到follwoing結果的一行:SQL報告顯示結果組

ID | Part | QTY| Boxes| Reference 
1 | ABC123 | 20 | 0 | REF0001 
2 | ABC345 | 10 | 0 | REF0001 
3 | ABC487 | 5 | 1 | REF0001 
4 | SEF453 | 4 | 0 | REF0002 
5 | ABDS12 | 82 | 4 | REF0002 
6 | EFR488 | 64 | 0 | REF0003 
7 | XCV345 | 58 | 0 | REF0003 
8 | SSFS33 | 23 | 3 | REF0003 

現在我得到

ID | Part | QTY| Boxes| Reference 
1 | ABC123 | 20 | 1 | REF0001 
2 | ABC345 | 10 | 1 | REF0001 
3 | ABC487 | 5 | 1 | REF0001 
4 | SEF453 | 4 | 4 | REF0002 
5 | ABDS12 | 82 | 4 | REF0002 
6 | EFR488 | 64 | 3 | REF0003 
7 | XCV345 | 58 | 3 | REF0003 
8 | SSFS33 | 23 | 3 | REF0003 

正如你所看到的,每基準箱的數量重複每一行,我需要每個參考只出現一個。

+2

你能顯示你的查詢嗎? – 2012-07-16 22:34:03

+1

...你的基礎數據呢?你如何確定顯示數量的參考? (爲什麼......) – 2012-07-16 22:35:48

回答

0

那麼,這裏是一種方法。 。 。

with t as (<your current query>) 
select ID, Part, QTY, 
     max(Boxes) over (partition by Reference) as Boxes, 
     Reference 
from t 
0

爲每個參考分組的行號分配將標記與1共享相同參考的最高ID;主查詢檢查該標記,如果不滿足則輸出零。

; with q as 
(
    select *, 
     row_number() over (partition by Reference 
          order by ID desc) rn 
    from 
    (
     your-query-here 
    ) a 
) 
select q.ID, 
     q.Part, 
     q.QTY, 
     case when rn = 1 then q.Boxes else 0 end as Boxes, 
     q.Reference 
    from q 
order by q.ID