我是新来的SQL查询,并且已经被抛入了深层!如何将两个不同的查询组合成不同的输出到一个输出
我有两个需要合并在一起的查询。一个执行三个计算(总和为WGHours,计为WGCount,总和/计数为WGAvg)并将输出分为2列:工作组和优先级。其他执行相同的计算(PHours,PCOunt,PAVG而是由一列仅基 - 优先这是这样我就可以找到针对每个优先级的总图中,所以我可以最后划分WGAvg/PAVG以产生一个%。
我可以单独创建两个查询,但需要将两者的输出合并在一起,以便我可以在一个表中使用它们。我试过UNION ALL,但它不会生成我需要的输出,这是:
WORK_GROUP, PRIORITY, WGHOURS, WGCount, WGAvg, PHours, PCount, PAvg
任何想法我如何做到这一点?我试过使用一个解决办法,我在这里找到,但得到的Oracle错误,告诉我该命令没有正确地结束:
SELECT One.OPriority,
WorkGroup,
AverageHours,
WoCount,
Divis
FROM (Select CORVU.MSV620.ORIG_PRIORITY as OPriority,
CORVU.MSV620.WORK_GROUP as WorkGroup,
SUM(CORVU.MSV621.ACT_LAB_HRS) AS AverageHours,
COUNT(CORVU.MSV621.WORK_ORDER) AS WoCount,
CAST(SUM(CORVU.MSV621.ACT_LAB_HRS)/COUNT(CORVU.MSV621.WORK_ORDER) AS DECIMAL (38, 2)) AS Divis
FROM CORVU.MSV620, CORVU.MSV621
WHERE CORVU.MSV620.WORK_ORDER = CORVU.MSV621.WORK_ORDER
GROUP BY CORVU.MSV620.ORIG_PRIORITY, CORVU.MSV620.WORK_GROUP) AS one
JOIN (
SELECT CORVU.MSV620.ORIG_PRIORITY as OPriority,
CAST(SUM(CORVU.MSV621.ACT_LAB_HRS)/COUNT(CORVU.MSV621.WORK_ORDER) AS DECIMAL (38, 2)) AS DivisOP
FROM CORVU.MSV620, CORVU.MSV621
WHERE CORVU.MSV620.WORK_ORDER = CORVU.MSV621.WORK_ORDER AND (CORVU.MSV620.WORK_GROUP IN ('ENGA01', 'ENGA02', 'ENGA04', 'ENGA05', 'ENGA06',
'ENGA08')) AND (CORVU.MSV620.ACCOUNT_CODE LIKE '%B01%') AND (CORVU.MSV621.ACT_LAB_HRS > 0) AND (NOT (CORVU.MSV620.STD_JOB_NO IN ('ELE995',
'MEC995', 'ICA995'))) AND (CORVU.MSV620.ORIG_PRIORITY IN ('CH', 'CS', 'T0', 'T1', 'T2', 'T3', 'T4')) AND
(CORVU.MSV620.CLOSED_DT >= TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), - 1), 'yyyymmdd')) AND
(CORVU.MSV620.CLOSED_DT <= TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE + 30, 'MONTH') - 1, - 1), 'yyyymmdd'))
GROUP BY CORVU.MSV620.ORIG_PRIORITY) as two
WHERE one.CORVU.MSV620.ORIG_PRIORITY = two.CORVU.MSV620.ORIG_PRIORITY;
哪个dbms? Oracle或sql服务器? – JiggsJedi