我想解决一个困难的 SQL 查询。如果您能就如何在表上实现这个相对复杂的 SQL 查询提供一些意见,我将不胜感激。
我目前有一个表如下:
caseId scanId attribute
-----------------------
1 2 A
1 4 A
2 3 B
3 NULL NULL
我希望能够实现这张表:
caseId scanId1 scanId2 attribute1 attribute2 count
--------------------------------------------------
1 2 4 A A 2
2 3 NULL B NULL 1
3 NUL NULL NULL NULL 0
我知道这涉及到自己连接表,但是我无法想出如何动态生成所需的列数(scanId1、scanId2 等),这取决于唯一 caseId 元组的数量。
关于如何让它工作的任何提示?
提前致谢!
最佳答案
你可以试试这个。有效
SELECT
caseId,
MAX(CASE WHEN scanId IN (2,3) THEN scanId ELSE NULL END) AS scanId1,
MAX(CASE WHEN scanId=4 THEN scanId ELSE NULL END ) AS scanId2,
MAX(CASE WHEN attribute =('A', 'B')THEN attribute ELSE NULL END) AS attribute1,
MAX(CASE WHEN attribute IN ('A') THEN attribute ELSE NULL END ) AS attribute2,
count(scanId) AS counts
FROM
GGG
GROUP BY
caseId
关于mysql - 复杂的动态 SQL 查询,自行加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27044828/