2009年3月13日 星期五

ACCESS 多重 JOIN 疑問

ACCESS 不能同時使用兩個LEFT JOIN 嗎? 疑 ?
怎麼試都不成功...
SELECT CC.編號,CC.品名,AA.表單A數量和,BB.表單B數量和,(AA.表單A數量和-BB.表單B數量和) AS 兩表數量差異
FROM
(SELECT 表單A.編號,表單A.品名 FROM 表單A UNION SELECT 表單B.編號,表單B.品名 FROM 表單B ) AS CC
LEFT JOIN (SELECT 表單A.編號,表單A.品名,SUM(表單A.數量) AS 表單A數量和 FROM 表單A GROUP BY 表單A.編號,表單A.品名) AS AA ON CC.編號 = AA.編號
LEFT JOIN (SELECT 表單B.編號,表單B.品名,SUM(表單B.數量) AS 表單B數量和 FROM 表單B GROUP BY 表單B.編號,表單B.品名) AS BB ON CC.編號 = BB.編號

最後改變方法...把資料都先UNION ALL 起來, 雖然WORKing, 但,這種邏輯是否是當呢? 記憶體...效能...
SELECT 編號,
品名,
SUM(IIF(ST='A',數量,0)) AS 表單A數量,
SUM(IIF(ST='A',0,數量)) AS 表單B數量,
abs(SUM(IIF(ST='A',數量,數量*-1))) AS 兩表數量差異
FROM (SELECT 'A' AS ST, 編號, 品名, 數量 FROM 表單A
UNION ALL
SELECT 'B' AS ST, 編號, 品名, 數量 FROM 表單B
) AS CC
GROUP BY 編號, 品名

PS: 其他SQL 可以用case when 替換 iif 達到類似的目的.

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。