1

私は次の結果に到達しようとしています:

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

ご覧のとおり、参照ごとのボックスの数は各行を繰り返しており、参照ごとに1つだけ表示する必要があります。

4

2 に答える 2

0

さて、ここに1つの方法があります。。。

with t as (<your current query>)
select ID, Part, QTY,
       max(Boxes) over (partition by Reference) as Boxes,
       Reference
from t
于 2012-07-17T00:01:08.690 に答える
0

各参照ごとにグループ化された行番号を割り当てると、同じ参照を共有する最大の ID が 1 としてマークされます。メインクエリはこのマークをチェックし、満たされない場合はゼロを出力します。

; 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
于 2012-07-17T00:29:21.833 に答える