【发布时间】:2020-12-14 09:48:58
【问题描述】:
请告诉我这个问题。
TABLE:PPP
+-------+---------+---------+----------+
|No | Flag_A | Flag_B | Qty |
+-------+---------+---------+----------+
|100 | P | 0 | 10 |
|300 | B | 1 | 20 |
|500 | C | 0 | 30 |
|100 | P | 0 | 40 |
|100 | P | 0 | 50 |
|300 | B | 1 | 60 |
|500 | C | 1 | 70 |
|100 | P | 0 | 80 |
|500 | B | 2 | 90 |
+-------+---------+---------+----------+
SELECT NO, SUM(QTY) AS QTY
FROM PPP
WHERE
CASE FLAG_B IN (
WHEN FLAG_A = 'P' THEN '0'
WHEN FLAG_A = 'C' THEN '1'
WHEN FLAG_A = 'B' THEN '0' , '1' <- how to write?
END
)
GROUP BY NO
我想得到这个结果。
+----+-----+
| No | Qty |
+----+-----+
| 100| 180|
| 300| 80|
| 500| 100|
+----+-----+
sql应该写什么?
【问题讨论】:
-
No=500 似乎不可能得到 Qty=100 ...
-
奇怪的是,名为“flag”的列的值是“2”。
标签: sql oracle case where-clause