【发布时间】:2020-07-17 13:22:47
【问题描述】:
我有下表Rates 的数据如下:
Code Value
A FC
B PC
A PC
A FC
B FC
C PC
我期望输出如下:
Code FC PC
A 2 1
B 1 1
C 0 1
我写的查询如下:
SELECT
Rates.Code AS Code,
SUM(CASE WHEN Rates.Value='FC' THEN 1 ELSE 0 END) AS FC,
SUM(CASE WHEN Rates.Value='PC' THEN 1 ELSE 0 END) AS PC
FROM
Rates
GROUP BY Rates.Code
ORDER BY Rates.Code
它没有以预期的格式给出输出,我想我需要使用 Pivot 但不知道如何编写它,因为我是 SQL 新手。 我已经编写了如下 python 代码,这对我来说很好,如果有人知道如何编写 SQL,这将非常有帮助。
Rates.groupby(['Code'])['Value'].value_counts().unstack(fill_value=0)`
【问题讨论】:
-
它给你的输出是什么?
-
您的查询在我的测试中有效。你得到了什么?
-
@Rajat 我只得到 FC 和 PC 的 1 和 0 值。
-
@PiyushS.Wanare 会不会是值字段中隐藏了一些特殊字符?尝试在 case 表达式中使用 like '%FC%' 看看是否是问题所在。
-
@Rajat ,在这种情况下我需要使用
like而不是=。
标签: mysql sql python-sql