クエリのデータをグループごとに 1 つの行にフラット化しようとしています。CASE ステートメントを使用するとこれが達成されると思いましたが、それでも結果は別々の行に配置されます。また、Group By 句で CASE ステートメントを使用しています。
Actual Results: Desired Result:
aonBom Fees aonBom Fees
AA201 D02440120105 9.00 AA201 D02440120105 15.00
AA201 D02440120105 6.00 AA201 D14251210105 9.00
AA201 D14251210105 9.00 AA201 D16007120115 9.00
AA201 D16007120115 9.00 AA702 D02440120110 15.00
AA702 D02440120110 9.00
AA702 D02440120110 6.00
私の現在のSQL文は次のとおりです。
SELECT
CASE a.productid
WHEN 6 THEN a.productid + space(2) + a.cusotmerid + p.progcode+ w.level
WHEN 7 THEN a.productid + space(1) + a.cusotmerid + p.progcode+ w.level
ELSE a.productid + space(3) + a.cusotmerid + p.progcode + w.level
END AS aonBom,
CASE
WHEN (s.sku IN('80-53-0000', '80-52-TTSB')
or s.sku BETWEEN '90-00-0000' AND '90-00-9999')
THEN sum(s.retail)
END as Fees
FROM
l
INNER JOIN item ON l.product = i.prime
INNER JOIN item AS s ON l.compon =s.prime
INNER JOIN a ON i.prime = a.product
INNER JOIN p ON a.program = p.prime
INNER JOIN w ON a.award = w.prime
INNER JOIN c ON p.customerid = c.prime
WHERE
c.active = 'Active'
AND p.status = 'Active'
GROUP BY
CASE a.productid
WHEN 6 THEN a.productid + space(2) + a.cusotmerid + p.progcode+ w.level
WHEN 7 THEN a.productid + space(1) + a.cusotmerid + p.progcode+ w.level
ELSE a.productid + space(3) + a.cusotmerid + p.progcode + w.level
END,
s.sku,
c.active,
p.status
HAVING
s.sku IN ('80-53-0000', '80-52-TTSB') OR
(s.sku BETWEEN '90-00-0000' AND '90-00-9999')
ORDER BY
aonBom
CASE ステートメントを使用することがデータを平坦化する方法であるというウェブ上のいくつかの記事を準備しましたが、ここで何が間違っているのかわかりません。