を成し遂げることができませんよ、ここにあなたがそれを行うことができる方法の例です:
DECLARE @myTable TABLE (unit INT, boxid INT, amnt1 DECIMAL(8, 4), amnt2 DECIMAL(8, 4));
INSERT @myTable VALUES
(10002, 2, 0.042, 1.53), (10002, 27, 1.25, null), (10002, 158, null, null), (10002, 63, 1.75, null)
, (10003, 156, 1.60, null), (10003, 2, 0.042, 1.53), (10003, 9, null, null), (10003, 19, 1.15, null)
, (10004, 9, null, null), (10004, 62, 2.000, 100)
, (10005, 69, 0.1, 6.9), (10005, 70, 0.2, 0.2), (10005, 71, 0.23, 0.69);
SELECT unit, boxid, amnt1, amnt2
FROM (
SELECT unit, boxid, amnt1, amnt2, ROW_NUMBER() OVER (PARTITION BY unit ORDER BY Y DESC) R
FROM @myTable
CROSS APPLY (
SELECT MAX(Y)
FROM (VALUES (amnt1), (amnt2)) X(Y)) Z(Y)) T
WHERE R = 1;
ここでは、amnt1とamnt2を比較し、その2つから最大値を取得します。次に、他の回答と同様に、行番号関数を使用して結果セットを並べ替えます(単位で分割)。ここ
あなたの親切な対応のための – user1063108