我将代码缩短了很多,但希望有人能够了解我尝试做什么。需要从两个不同的选择中总和总和,我尝试将它们中的每个都放在左外连接中(也尝试了内连接)。如果我在左外连接注释时运行,我得到正确的数据,但是当我一起运行它时,我真的搞砸了计数。所以,我知道连接可能不是从同一个表中求和数据的正确方法,我可以;简单地在where子句中执行它,其他表涉及到我注释掉的代码。
我想我想把两个不同的查询加在一起。
SELECT eeoc.EEOCode AS 'Test1',
SUM(eeosum.Col_One) AS 'Col_One',
FROM EEO1Analysis eeo
LEFT OUTER JOIN (
SELECT eeor.AnalysisID, eeor.Test1,
SUM(CASE eeor.ZZZ WHEN 1 THEN (CASE eeor.AAAA WHEN 1 THEN 1 ELSE 0 END) ELSE 0 END) AS 'Col_One',
FROM EEO1Roster eeor
..........
WHERE eeor.AnalysisID = 7
GROUP BY eeor.AnalysisID, eeor.EEOCode
) AS eeosum2 ON eeosum2.AnalysisID = eeo.AnalysisID
LEFT OUTER JOIN (
SELECT eeor.AnalysisID, eeor.Test1,
SUM(CASE eeor.ZZZ WHEN 1 THEN (CASE eeor.AAAA WHEN 1 THEN 1 ELSE 0 END) ELSE 0 END) AS 'Col_One',
FROM EEO1Roster eeor
........
) AS eeosum ON eeosum.AnalysisID = eeo.AnalysisID
WHERE eeo.AnalysisID = 7
GROUP BY eeoc.Test1
答案 0 :(得分:3)
你可以联合所有2个查询,然后进行SUM + GROUP BY即
SELECT Col1, Col2, SUM(Col_One) FROM
(SELECT Col1, Col2, SUM(Col_One)
FROM Table1
WHERE <Conditionset1>
GROUP BY Col1, Col2
UNION ALL
SELECT Col1, Col2, SUM(Col_One)
FROM Table1
WHERE <Conditionset2>
GROUP BY Col1, Col2)
GROUP BY
Col1, Col2
当然,如果有返回的行,它们将被重复计算。
答案 1 :(得分:0)
怎么样?
SELECT ... FROM EEO1Analysis eeo,
(SELECT ... LEFT OUTER JOIN ... GROUP BY ... ) AS data
...
而且,如果可以,我建议将数据准备为单独的表,然后使用不同的分析ID对它们进行操作。至少可以节省一些执行时间。
答案 2 :(得分:0)
需要从两个不同的选择中总和 如果你期望一行单列结果,这种方式就足够了
SELECT
((SELECT SUM(...) FROM ... GROUP BY...) +
(SELECT SUM(...) FROM ... GROUP BY...)) as TheSumOfTwoSums