我有六種不同的select語句用於SSRS報告目的。聯合所有幫助需要
以下是兩條陳述。我需要關於如何對波紋管執行Union All
的幫助,並將所有語句合併爲一個。
DECLARE @FromDate AS DATE='04-Aug-2015'
DECLARE @ToDate AS DATE='05-Aug-2015'
SELECT
A.LBrCode AS BranchCode,
(SELECT B.Name
FROM D001003 B
WHERE A.LBrCode = B.PBrCode) AS BranchName,
C.PrdCd AS Product,
SUM(D.FcyTrnAmt) AS Amount
FROM
D009022 A
INNER JOIN
D009021 C ON substring(A.PrdAcctId, 1, 8) = C.PrdCd
AND A.LBrCode = C.LBrCode
LEFT JOIN
D009040 D ON A.PrdAcctId = D.VcrAcctId
AND substring(D.VcrAcctId, 1, 8) = C.PrdCd
AND A.LBrCode = D.LBrCode
WHERE
A.AcctStat <> 3
AND A.DateOpen >= @FromDate
AND A.DateOpen <= @ToDate
AND C.ModuleType = 11
AND D.DrCr = 'D'
AND D.CanceledFlag <> 'C'
GROUP BY
A.LBrCode, C.PrdCd
ORDER BY
A.LBrCode
UNION ALL
SELECT
A.LBrCode AS BranchCode,
(SELECT B.Name FROM D001003 B WHERE A.LBrCode = B.PBrCode) AS BranchName,
C.PrdCd AS Product,
SUM(A.ActTotBalFcy) AS Balance
FROM
D009022 A
INNER JOIN
D009021 C ON substring(A.PrdAcctId, 1, 8) = C.PrdCd
AND A.LBrCode = C.LBrCode
WHERE
C.ModuleType = 11
AND A.AcctStat <> 3
AND A.DateOpen >= @FromDate
AND A.DateOpen <= @ToDate
GROUP BY
A.LBrCode, C.PrdCd
ORDER BY
A.LBrCode
可以使用CTE(公用表表達式) –
將D的條件從WHERE子句移到ON子句以獲得真正的LEFT JOIN行爲。 (因爲它現在它作爲一個普通的內部連接執行......) – jarlh