我会很感激,如果有人可以帮助我与我的查询:提高查询加入表的SELECT语句在T-SQL
我的第一个查询:
SELECT
1 as num, 'TITLE1' as tt, [DATE], CURRENCY,
SUM(AMOUNT) as assets, NULL as liabilities
FROM
[MYTABLE] T1
WHERE
GROUP_ID IN (1700) AND [DATE] = '2014-01-20'
GROUP BY
CURRENCY, [DATE]
这给了我:
num tt DATE CURRENCY assets liabilities
1 TITLE1 2014-01-20 USD 1111 NULL
第二个查询:
SELECT
1, 'TITLE1', [DATE], CURRENCY, NULL as assets,
SUM(AMOUNT) as liabilities
FROM
[MYTABLE] T2
WHERE
GROUP_ID IN (2700, 2770)
AND [DATE] = '2014-01-20'
GROUP BY
CURRENCY, [DATE]
这给了我:
num tt DATE CURRENCY assets liabilities
1 TITLE1 2014-01-20 EUR NULL 22222
我想加入这两个查询,这样的结果将是:
num tt DATE CURRENCY assets liabilities
1 TITLE1 2014-01-20 EUR NULL 22222
1 TITLE1 2014-01-20 USD 1111 NULL
这种情况时CURRENCY
是不同的。但是,当CURRENCY
是相同的结果应该是这样的:
num tt DATE CURRENCY assets liabilities
1 TITLE1 2014-01-20 EUR 3333 22222
1 TITLE1 2014-01-20 USD 1111 44444
的逻辑是,我计算Assets
和liabilities
通过CURRENCY
和从一个表DATE
但在不同GROUD_ID
与分组。尝试使用子查询,但只得到一个条目(如果当货币对assets
和liabilities
不同):
SELECT
1, 'TITLE1', [DATE], CURRENCY, SUM(AMOUNT) as assets,
(SELECT SUM(AMOUNT) as liabilities
FROM [MYTABLE] T2
WHERE (GROUP_ID IN (2700, 2770))
AND [DATE] = '2014-01-20' AND T1.CURRENCY = T2.CURRENCY
GROUP BY CURRENCY, [DATE])
FROM
[MYTABLE] T1
WHERE
GROUP_ID IN (1700) AND [DATE] = '2014-01-20'
GROUP BY
CURRENCY, [DATE]
我相信我可以用左手参加处理这个问题。我会很感激任何帮助。
我不能只UNION两个查询,因为我需要在一行中显示资产和负债,如果货币是相同的。 –