【发布时间】:2021-04-21 17:01:26
【问题描述】:
我需要创建一个 SQL 选择语句,但遇到了一些问题。也许有人可以帮忙。我的桌子看起来像这样:
| Article | Name | Amount | Location | Count |
|---|---|---|---|---|
| A0 | Name0 | 10 | 99 | 1 |
| A0 | Name0 | 50 | 44 | 1 |
| A0 | Name0 | 20 | 44 | 1 |
| A1 | Name1 | 300 | 44 | 1 |
| A1 | Name1 | 250 | 110 | 1 |
| A2 | Name2 | 10 | 99 | 0 |
| A3 | Name3 | 20 | 1000 | 1 |
| A4 | Name4 | NULL | NULL | 1 |
如果 count = 1,我需要做一个 select 语句来总结特定位置每篇文章的数量。我的想法是做这样的事情:
SELECT article, name, sum(amount), location
FROM test
WHERE count = 1
AND (location IN (44, 99)
OR location IS NULL)
GROUP BY article, name, location;
这将导致如下结果:
| ARTICLE | NAME | SUM(AMOUNT) | LOCATION |
|---|---|---|---|
| A0 | Name0 | 70 | 44 |
| A0 | Name0 | 10 | 99 |
| A4 | Name4 | - | - |
| A1 | Name1 | 300 | 44 |
唯一的问题是,我还需要输出表中数量和位置为 0 或 NULL 的文章 A3。所以如果位置44或99没有找到商品,该行不能省略,包含数量0和位置0。但如果位置99或44有产品,则不能有额外的行,数量为0和位置0。位置 0。
这甚至可以用 SQL 实现吗?非常感谢您的回答!
【问题讨论】:
-
请解释逻辑。