【发布时间】:2020-02-13 14:48:20
【问题描述】:
我在 sqlite 数据库中有一个如下表。我想创建一个按产品组显示使用情况的折线图。
Table: ProductUsageData
UserID ProductName ProductGroup Qty RecordID
1 A1 A 12 1
2 A1 A 12 1
1 A2 A 15 1
3 A1 A 12 2
2 B1 B 12 2
5 B2 B 5 2
1 A1 A 12 3
1 A2 A 15 3
4 A1 A 12 3
3 C1 C 12 3
2 C2 C 15 3
因为我希望在查询下方使用的每个 ProductGroup 都有单独的行
SELECT
SUM(Qty) as UsedQty,
ProductGroup,
RecordID
FROM ProductUsageData
GROUP BY ProductGroup, RecordID
ORDER BY RecordID ASC;
虽然我为 A 获得了 3 条记录(对于每个 RecordID),但对于 B 和 C,我只获得了 1 条记录,因为它们在每个 RecordID 中都没有使用。 问题是当我在图表中为每个 ProductGroup 放置一条线时,B & C 的点在第一个中按数量显示 我的输出是这样的
A 39 1
A 12 2
B 17 2
A 39 3
C 27 3
所以图表看起来像这样
而不是
为了解决这个问题,如果在每次录制期间未使用 ProductGroup,我使用 COALESCE 更改了查询以获取 0 Qty。
SELECT
COALESCE(SUM(Qty), 0) as UsedQty,
ProductGroup,
RecordID
FROM ProductUsageData
GROUP BY ProductGroup, RecordID
ORDER BY RecordID ASC;
我期待如下输出
A 39 1
B 0 1
C 0 1
A 12 2
B 17 2
C 0 2
A 39 3
B 0 3
C 27 3
但我得到的输出与第一个相同
请告诉我如何更正查询以获得所需的输出
【问题讨论】: