【发布时间】:2015-01-18 14:57:11
【问题描述】:
我正在寻求解决一个困难的 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 元组的数量。
关于如何让它发挥作用的任何提示?
提前致谢!
【问题讨论】:
-
谷歌:“MySQL 动态支点”。如果您的列数是动态的,那么您需要使用
prepare/execute语句,并且在这个主题上有很多很好的答案。 -
遗憾的是,您没有可用的表示层(例如 PHP)
-
@Gordon - Googling MSSQL dynamic pivot 让您回到堆栈溢出 here...
-
谢谢,我将这些查询与 PHP 一起使用,因此我能够以这种方式处理数据,而不是尝试使用 mySQL 本身创建数据透视表