mysql - 复杂的动态 SQL 查询,自行加入

标签 mysql sql join self-join

我想解决一个困难的 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/

相关文章:

sql - 数据库实现 DDL 和 DML 的方式有区别吗?

sql - 甲骨文 SQL : Add sum from another table to query results

Python:太多 join()?

mysql - 从连接表中仅选择具有 MAX(date) 的行中的所有列

加入MySQL。如何只加入第一场比赛? (加入限制1)

mysql - Rails 查询接口(interface) where 子句问题?

java - 使用javafx向mysql数据库插入数据时出错

php - 优化大型 WordPress 网站

java - NetBeans MySQL 驱动程序连接错误 dist Jar 文件

php - WordPress 查询结果,其中所有列都与所选 id 的列具有相同的值