簡體   English   中英

在MySql中以不同的列的形式獲取值計數

[英]Fetch count of values as different columns for different values in MySql

我在MySQL表中的數據具有以下格式。 我想獲取字符串值的計數作為MySql查詢中的不同列,這意味着如果該列具有3個不同的值,則將從數據庫中獲取數據時將添加3個列以得到結果。

桌子:

task table

id  | task      |
----|-----------|
1   | TASK1     |
----|-----------|
2   | TASK2     |
----|-----------|
3   | TASK3     |
----|-----------|

priority table

id  |  task_id  | priority  |
----|-----------|-----------|
1   |      1    |    Low    |
----|-----------|-----------|
2   |      1    |  Medium   |
----|-----------|-----------|
3   |      1    |   High    |
----|-----------|-----------|
4   |      1    |   High    |
----|-----------|-----------|
5   |      1    |   Low     |
----|-----------|-----------|
6   |      1    |   Medium  |
----|-----------|-----------|
7   |      1    |   High    |
 . 
 .
 N

預期結果 :

task |low_priority  | medium_priority | high_priority
-----|--------------|-----------------|--------------
TASK1|    2         |        2        |      3    
-----|--------------|-----------------|--------------

現在,我正在嘗試以下查詢,但未找到預期結果。

SELECT task, (CASE WHEN priority = 'low' THEN 1 ELSe 0 END ) AS 'low_priority',(CASE WHEN priority = 'medium' THEN 1 ELSE 0 END) AS 'medium_priority',(CASE WHEN priority = 'high' THEN 1 ELSE 0 END ) AS 'high_priority' FROM task LEFT JOIN priority ON priority.task_id = task.id GROUP BY task.id

你可以這樣

SELECT task, SUM(CASE WHEN priority = 'Low' THEN 1 ELSE 0 END )   AS 'low_priority',
             SUM(CASE WHEN priority = 'Medium' THEN 1 ELSE 0 END) AS 'medium_priority',
             SUM(CASE WHEN priority = 'High' THEN 1 ELSE 0 END )  AS 'high_priority'
FROM task 
LEFT JOIN priority ON priority.task_id = task.id GROUP BY task.id
HAVING SUM(CASE WHEN priority = 'Low' THEN 1 ELSE 0 END ) > 0    OR 
       SUM(CASE WHEN priority = 'Medium' THEN 1 ELSE 0 END ) > 0 OR
       SUM(CASE WHEN priority = 'High' THEN 1 ELSE 0 END )

結果將是

+-------+--------------+-----------------+---------------+
| task  | low_priority | medium_priority | high_priority |
+-------+--------------+-----------------+---------------+
| TASK1 |            2 |               2 |             3 |
+-------+--------------+-----------------+---------------+
1 row in set (0.00 sec)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM