我是SQL的新手,从来没有像这样做过任何复杂的事情。任何帮助将不胜感激。
我在表格中有以下数据:
ID - TAG
1 - U
1 - N
1 - U
1 - N
1 - U
我的输出需要
ID - U - N
1 - 3 - 2
基本上我的输出需要计算ID的N和U,并为该ID生成一行。
感谢您的时间。
答案 0 :(得分:2)
SELECT
ID,
COUNT(CASE WHEN TAG = 'U' THEN 1 END) AS [U],
COUNT(CASE WHEN TAG = 'N' THEN 1 END) AS [N]
FROM
someTable
GROUP BY
ID
更新:
另一张海报(见下文)指出我使用方括号,其中一些RDBMS需要双引号。
答案 1 :(得分:1)
在MySQL中,这比你想象的要简单:)
select id,
sum(if(tag = 'U', 1, 0)) as U,
sum(if(tag = 'N', 1, 0)) as N
from table1
group by id
基本上,对于每个id,您可以创建一个新列(U和N),根据标记是否具有值“U”或“N”,它将具有1或0。这导致如下:
+----+---+---+
| ID | U | N |
+----+---+---+
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
+----+---+---+
现在,我们所要做的就是按ID分组,并将U和N中的所有值相加,得到:
+----+---+---+
| ID | U | N |
+----+---+---+
| 1 | 3 | 2 |
+----+---+---+
希望这有帮助。