【发布时间】:2020-10-12 14:39:12
【问题描述】:
我需要将同一张表中的两个查询合并到一张表中:
SELECT
t.[Origin Terminal Name] as 'Terminal',
COUNT(t.[Pro Number]) as 'Inbound Shipments',
SUM(t.[Total Revenue]) as 'Inbound Revenue'
FROM [AX2cTestStage].[dbo].[AX2cTestAdapter_dbo_AAATRANSPORTTABLE_V] t
GROUP BY t.[Origin Terminal Name]
ORDER BY t.[Origin Terminal Name] ASC
SELECT
t.[Destination Terminal Name] as 'Terminal',
COUNT(t.[Pro Number]) as 'Outbound Shipments',
SUM(t.[Total Revenue]) as 'Outbound Revenue'
FROM [AX2cTestStage].[dbo].[AX2cTestAdapter_dbo_AAATRANSPORTTABLE_V] t
GROUP BY t.[Destination Terminal Name]
ORDER BY t.[Destination Terminal Name] ASC
它们都产生以下结果:
Terminal Inbound Shipments Inbound Revenue
Abilene 520 75970.08
Albany 877 130560.28
Terminal Outbound Shipments Outbound Revenue
Abilene 2684 419523.83
Albany 2820 407871.89
我需要这个作为输出:
Terminal Inbound Shipments Inbound Revenue Outbound Shipments Outbound Revenue
Abilene 520 75970.08 2684 419523.83
Albany 877 130560.28 2820 407871.89
我试过这个查询:
SELECT
t.[Origin Terminal Name] as 'Terminal',
COUNT(t.[Pro Number]) as 'Inbound Shipments',
SUM(t.[Total Revenue]) as 'Inbound Revenue',
(SELECT
t2.[Destination Terminal Name] as 'Terminal',
COUNT(t2.[Pro Number]) as 'Outbound Shipments',
SUM(t2.[Total Revenue]) as 'Outbound Revenue'
FROM [AX2cTestStage].[dbo].[AX2cTestAdapter_dbo_AAATRANSPORTTABLE_V] t2
GROUP BY t2.[Destination Terminal Name])
FROM [AX2cTestStage].[dbo].[AX2cTestAdapter_dbo_AAATRANSPORTTABLE_V] t
LEFT JOIN [AX2cTestStage].[dbo].[AX2cTestAdapter_dbo_AAATRANSPORTTABLE_V] t2 ON t.[Origin Terminal Name] = t2.[Destination Terminal Name]
GROUP BY t.[Origin Terminal Name]
ORDER BY t.[Origin Terminal Name] ASC
我收到了这个错误:
消息 116,级别 16,状态 1,行 22 当子查询不使用 EXISTS 引入时,选择列表中只能指定一个表达式。
子查询是解决这个问题的方法吗?我很感激任何建议
【问题讨论】:
-
请发布一些示例数据。您可以尝试为入站和出站分别使用一个临时表加入最终数据集的结果集。
标签: sql sql-server tsql ssms unpivot