我试图为报告重新安排一些数据 -
我有一张包含地点列表的表格:
| LocationID | LocationName |
和另一个:
| LocationID | OrderNum | Count |
我试图制作一个返回的选择语句:
| OrderNum | LocationName1 | LocationName2 | LocationName3 |...
orderNum1 |count1 |count1 |count1 |...
orderNum2 |count2 |count2 |count2 |...
基本上按订单编号或订单编号,每个位置...任何帮助表示赞赏,谢谢!
答案 0 :(得分:0)
你可以尝试一下:
create table ##Locations (LocationID int , LocationName varchar(15))
create table ##OrderNums (LocationID int , OrderNum varchar(15), _count int )
insert ##Locations values (1,'LocationName1'),(2,'LocationName2'),(3,'LocationName3'),(4,'LocationName4')
insert ##OrderNums values (1,'orderNum1',2),(2,'orderNum1',3),(4,'orderNum1',5),
(3,'orderNum2',2),(4,'orderNum2',3),(4,'orderNum3',5),(4,'orderNum2',5)
declare @sql nvarchar(max) =''
declare @columns nvarchar(max) =''
Select @columns = @columns + N'[' + LocationName + N'],' from ##Locations
SET @sql = N'select OrderNum,' + Left(@columns, Len(@columns) - 1) + N' from (
select o.OrderNum, l.LocationName, _count from ##OrderNums o inner join ##Locations l on o.LocationID = l.LocationID
) as St pivot ( sum(_count) for LocationName in ( ' + Left(@columns, Len(@columns) - 1) + N') ) pvt'
exec sp_executesql @sql
OrderNum LocationName1 LocationName2 LocationName3 LocationName4
--------------- ------------- ------------- ------------- -------------
orderNum1 2 3 NULL 5
orderNum2 NULL NULL 2 8
orderNum3 NULL NULL NULL 5