【发布时间】:2010-12-31 03:24:26
【问题描述】:
我有一个查询返回在每个位置的合同和合同外花费了多少,它返回如下内容:
Location | ContractStatus | Expenses
-------------+----------------+---------
New York | Ad-hoc | 2043.47
New York | Contracted | 2894.57
Philadelphia | Ad-hoc | 3922.53
Seattle | Contracted | 2522.00
问题是,对于所有临时或所有合同费用的地点,我只能得到一行。我想为每个位置返回两行,如下所示:
Location | ContractStatus | Expenses
-------------+----------------+---------
New York | Ad-hoc | 2043.47
New York | Contracted | 2894.57
Philadelphia | Ad-hoc | 3922.53
Philadelphia | Contracted | 0.00
Seattle | Ad-hoc | 0.00
Seattle | Contracted | 2522.00
有什么方法可以通过 SQL 来完成吗?这是我正在使用的实际查询(SQL Server 2005):
SELECT Location,
CASE WHEN Orders.Contract_ID IS NULL
THEN 'Ad-hoc' ELSE 'Contracted' END
AS ContractStatus,
SUM(OrderTotal) AS Expenses
FROM Orders
GROUP BY Location,
CASE WHEN Orders.Contract_ID IS NULL
THEN 'Ad-hoc' ELSE 'Contracted' END
ORDER BY Location ASC, ContractStatus ASC
【问题讨论】:
标签: sql sql-server sql-server-2005