在第一个字段上转动

时间:2012-09-07 00:16:27

标签: sql-server

我不知道如何让这项工作......我必须将我的数据恢复为这样

 Vendor1, sum(field1), sum(field2), sum(field3), sum(field4)...
 Vendor2, sum(field1), sum(field2), sum(field3), sum(field4)...
 Vendor3, sum(field1), sum(field2), sum(field3), sum(field4)...
 Vendor4, sum(field1), sum(field2), sum(field3), sum(field4)...

但是,我的数据不断返回

 Vendor1, field1, field2, filed3 field4...
 Vendor1, field1, field2, filed3 field4...
 Vendor1, field1, field2, filed3 field4...
 Vendor1, field1, field2, filed3 field4...

这是我到目前为止的一些内容

select substring(a.warehouse, 2, len(a.warehouse)) as 'Name of Vendor',
 Case 
 when b.status = 3 then
 sum(b.id) over (partition by substring(a.warehouse, 2, len(a.warehouse)))
 else 0
 End as 'Number of Orders',
 Case 
 when b.status = 4 then
 sum(b.P_Name) over (partition by substring(a.warehouse, 2, len(a.warehouse)))
 else 0
 End as 'Number of Items'
 from [Table1]a
 join [Table2]b
 on a.OrderID = b.OrderID

我有许多其他的案例陈述与所示的类似。

我不知道的是 how to pivot this as a grouping

我希望我能清楚地解释清楚。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将整个select语句包装在另一个SELECT中,然后再包含GROUP BY。 即:

SELECT a.[Name of Vendor], sum(a.[Number of Orders]), sum(a.[Number of Items]), ...
FROM
(
    select substring(a.warehouse, 2, len(a.warehouse)) as 'Name of Vendor',
    Case 
    when b.status = 3 then
    ...
) AS a
GROUP BY a.[Name of Vendor]