SQL加入/合并/联盟基于日期的多个表
我有一个数据库,每个表中有一个日期,我想合并。我遇到的问题是,如果某个日期出现在一张表中,那么如果该日期不存在于其他表格中,则不会显示测量结果。SQL加入/合并/联盟基于日期的多个表
我想基于它们的Date和PersonID连接/合并两个SQL查询。
我有表A和B以及希望创建C.
谁能帮助?
您也许能够做这样的事情,使用CTE和UNION ALL:
WITH tableC
AS
(
SELECT personID,
person,
datekey,
date,
SUM(sales) AS sales,
NULL AS costs
FROM tableA
GROUP BY personID, person, datekey, date
UNION ALL
SELECT personID,
person,
datekey,
date,
NULL,
SUM(costs) AS costs
FROM tableB
GROUP BY personID, person, datekey, date
)
SELECT personID,
person,
datekey,
date,
ISNULL(SUM(sales), 0) AS sales,
ISNULL(SUM(costs),0) AS costs
FROM tableC
GROUP BY personID, person, datekey, date
ORDER BY datekey
这工作,谢谢VDK! – Sanguinus
@Sanguinus很高兴我可以帮助:) – VDK
标记wiki说:“标记为'SQL'的问题的答案应该使用ISO/IEC标准SQL” - 要符合标准,您需要将'NULL'更改为'CAST(NULL AS INTEGER)',并用双引号将保留字'date'转义为'“date”'。我也认为你需要用'COALESCE'替换'ISNULL'来保证正确的功能。 – onedaywhen
请仔细阅读http://meta.stackoverflow.com/questions/285551/why- may-i-not-upload-images-code-on-so-when-asked-a-question/285557 and the accepted answer –
您正在使用哪些DBMS? Postgres的?甲骨文? DB2?火鸟? –