如何将SQL/MySQL查询输出划分为多个表?
问题描述:
我有以下查询:如何将SQL/MySQL查询输出划分为多个表?
SELECT COUNT (*) AS Total, Program, Status
FROM APP_PGM_CHOICE
WHERE Program IN ('EX', 'IM')
AND APP_PGM_REQ_DT >= '20150101'
AND APP_PGM_REQ_DT <= '20150131'
AND Status IN ('PE','DN','AP')
GROUP BY Program, Status
ORDER BY Program, Status
,输出是:
Total Program Status
12246 "EX" "AP"
13963 "EX" "DN"
21317 "EX" "PE"
540 "IM" "AP"
2110 "IM" "DN"
7184 "IM" "PE"
而且我要像输出:
Total1 Program1 Total2 Program2 Status
12246 EX 540 IM AP
13963 EX 2110 IM DN
21317 EX 7184 IM PE
我能做II?如果是最新的方式?
答
是的,你能做到这样简单的方法:
Select T1.Total Total1, T1.Program Program1, T2.Total Total2, T2.Program Program2, T1.Status
From
(SELECT COUNT (*) AS Total, Program, Status
FROM APP_PGM_CHOICE
WHERE Program = 'EX'
AND APP_PGM_REQ_DT >= '20150101'
AND APP_PGM_REQ_DT <= '20150131'
AND Status IN ('PE','DN','AP')
GROUP BY Program, Status
ORDER BY Program, Status) T1
INNER JOIN
(SELECT COUNT (*) AS Total, Program, Status
FROM APP_PGM_CHOICE
WHERE Program = 'IM'
AND APP_PGM_REQ_DT >= '20150101'
AND APP_PGM_REQ_DT <= '20150131'
AND Status IN ('PE','DN','AP')
GROUP BY Program, Status
ORDER BY Program, Status) T2 on T1.Status = T2.Status
答
您可以用UNION查询和一些简单的选择做到这一点
SELECT GROUP_CONCAT(total1) as total1, GROUP_CONCAT(proram1) as program1, GROUP_CONCAT(total2) as total2, GROUP_CONCAT(program2) as program2
FROM
(SELECT total AS total1, program AS program1, null AS total2, null AS program2
WHERE program = 'EX'
UNION
SELECT null AS total1, null AS program1, total AS total2, program AS program2
WHERE program = 'IM') t
这是枢行转换成列
+0
谢谢大卫:) – Madhusudan 2015-03-13 13:25:20
答
在SQL温度表是非常有用和简单的基金..
简单的方法来获得输出。
选择Total,PROG,状态 进入#TempAA 从CGT 其中PROG = 'EX' 集团的地位,道达尔,PROG
从CGT选择Total,PROG,状态 进入#TempBB 其中Prog ='IM' 按状态分组,总计,编程
选择A.Total为[Total1],A.Prog为[Program1],B.Total为[Total2],B.Prog为[Program2] ,A.Status 来自#TempAA A 内部连接#TempBB B在b.Status = A.status
非常感谢:)它帮助我:)再次感谢:) – Madhusudan 2015-03-13 13:21:53
没问题,高兴地帮助:) – 2015-03-13 13:22:10