如果你能帮我解释语法,我需要以下内容 我有一个包含2个字段ID和优先级的表,如下所示:
ID | Priority |
---------------
101| 1 |
105| 2 |
200| 3 |
104| 4 |
400| 5 |
400| 1 |
102| 2 |
120| 3 |
150| 4 |
210| 5 |
109| 1 |
104| 2 |
200| 3 |
105| 4 |
250| 5 |
我需要的是这个结果(最好)
ID |TP1|TP2|TP3|TP4|TP5|
-------------------------
101 | 1 | | | | |
102 | | 1 | | | |
104 | | 1 | | 1 | |
105 | | 1 | | 1 | |
109 | 1 | | | | |
120 | | | 1 | | |
150 | | | | 1 | |
200 | | | 2 | | |
250 | | | | | 1 |
400 | 1 | | | | 1 |
至少这一个:
ID | P | T |
------------
101| 1 | 1 |
102| 2 | 1 |
104| 2 | 1 |
104| 4 | 1 |
105| 2 | 1 |
105| 4 | 1 |
109| 1 | 1 |
120| 3 | 1 |
150| 4 | 1 |
200| 3 | 2 |
250| 5 | 1 |
400| 1 | 1 |
400| 5 | 1 |
对不起。我没有复制这部分内容。
该表有一堆ID,每个都有一个优先级(从1到5)。我需要的是计算任何ID使用优先级1,优先级2等的次数
如果你看ID 200出现2次优先3 提前感谢任何暗示。
答案 0 :(得分:1)
您可以使用以下内容:
SELECT ID, SUM(IF(Priority = 1, 1, 0)) TP1, SUM(IF(Priority= 2, 1, 0)) TP2, SUM(IF(Priority = 3, 1, 0)) TP3, SUM(IF(Priority = 4, 1, 0)) TP4, SUM(IF(Priority= 5, 1, 0)) TP5 FROM `tab1` GROUP BY ID
答案 1 :(得分:0)
试试这个:
select id,
count(case when Priority = 1 then 1 else null end) as TP1,
count(case when Priority = 2 then 1 else null end) as TP2,
count(case when Priority = 3 then 1 else null end) as TP3,
count(case when Priority = 4 then 1 else null end) as TP4,
count(case when Priority = 5 then 1 else null end) as TP5
from your_table
group by id