我尝试了不同的方法,希望有人能为我提供一个优雅的解决方案。
我需要显示一个表格:issues
,其中包含案例编号
问题是有些问题的案件编号不止一个
我有一个
Issues
和Cases
我计划将一个派生表(在4列中最多显示4个CaseNr)与问题表连接起来。 我需要派生此表的帮助
表格:Cases
IssueIDfk | CaseNR | CaseStatus
-------------------------------
1 | A1 | Open
1 | A5 | Open
1 | C7 | Closed
2 | BA | Open
2 | ZA | Open
2 | 12 | Open
3 | A3 | Open
4 | 99 | Open
我需要将其加入到Issues表IssueIDfk
中
无需创建重复的行
因此,我需要像这样的派生表:
IssueIDfk | First_CaseNR | First_CaseStatus | Secnd_CaseNR | Secnd_CaseStatus..
-------------------------------
1 | A1 | Open | A5 | Open ..
2 | BA | Open | ZA | Open ..
3 | A3 | Open | <NULL> | <NULL> ..
则每条记录的最大CaseNR数为4
我当前的查询:
SELECT DISTINCT
Cases.IssueIDfk,
(SELECT t1.CaseNR FROM Case t1 WHERE t1.IssueIDfk = Cases.IssueIDfk LIMIT 1) AS First_CaseNR,
(SELECT Max(t2.CaseNR) FROM Case t2 WHERE t2.IssueIDfk = Cases.IssueIDfk LIMIT 2) AS Secnd_CaseNR,
(SELECT Max(t3.CaseNR) FROM Case t3 WHERE t3.IssueIDfk = Cases.IssueIDfk LIMIT 3) AS Thrd_CaseNR
...First_CaseStatus,
...Secnd_CaseStatus,
...Thrd_CaseStatus ????
FROM
Cases
此SQL不会提供空值,我也不知道如何添加CaseStatus列
要使用此方法创建案例表:
r2d2
作为数据库
CREATE TABLE `r2d2`.`Case`
(
`IssueIDfk_` INTEGER NOT NULL,
`_CaseNR_` VARCHAR(12) NOT NULL,
`_CaseStatus` VARCHAR(12) NULL,
PRIMARY KEY (`_CaseNR_`)
);
INSERT INTO `r2d2`.`Case`
(`IssueIDfk_`,`_CaseNR_`,`_CaseStatus`)
VALUES
(1,' A1 ',' Open'),
(1,' A5 ',' Open'),
(1,' C7 ',' Closed'),
(2,' BA ',' Open'),
(2,' ZA ',' Open'),
(2,'12',' Open'),
(3,' A3 ',' Open'),
(4,'99',' Open');
更新:.......解决方案可在我的模拟中使用,但不幸的是,不适用于仪表板
我修改了来自
的查询
https://stackoverflow.com/a/28067142/1435526
由Gordon Linoff
SELECT o.IssueID,
MAX(case when rank = 1 then oc.CaseNumber end) as Case_1,
MAX(case when rank = 1 then oc.Type end) as Type_1,
MAX(case when rank = 1 then oc.CreatedDate end) as CreatedDate_1,
MAX(case when rank = 2 then oc.CaseNumber end) as Case_2,
MAX(case when rank = 2 then oc.Type end) as Type_2,
MAX(case when rank = 2 then oc.CreatedDate end) as CreatedDate_2
FROM Issues o LEFT JOIN
(SELECT
oc.*,
(@rn := if(@o = IssueIDfk, @rn + 1, if(@o := IssueIDfk, 1, 1))) as rank
FROM Cases oc CROSS JOIN
(SELECT @rn := 0, @o := 0) vars
ORDER BY oc.IssueIDfk
) oc
ON o.IssueID = oc.IssueIDfk
GROUP BY o.IssueIDfk
可以在我的模拟中工作,但不幸的是,不在仪表板中工作
ERROR 1351: View's SELECT contains a variable or parameter
更新2:
在https://stackoverflow.com/a/9652359/1435526上工作似乎可以在仿真中完成