我需要查询帮助以帮助我执行以下操作:
我想采用以下格式:
SalesOrderNumber CustomName Status Start End CrewName
29002 Turner, Linda Closed 2014-01-22 2014-01-24 Espinoza,H.
29002 Turner, Linda Closed 2014-01-22 2014-01-24 Severt,C.
29002 Turner, Linda Closed 2014-01-22 2014-01-24 Valladares,R.
并将其转换为:
SalesOrderNumber CustomName Status Start End CrewName1 CrewName2 CrewName3
29002 Turner, Linda Closed 2014-01-22 2014-01-24 Espinoza,H Severt,C. Valladares,R.
提前谢谢大家!
答案 0 :(得分:0)
您可以使用PIVOT获取结果,但您还需要使用row_number()
之类的窗口函数为SalesOrderNumber
中的每一行创建唯一值。然后,此唯一编号将用于创建新列:
select salesordernumber, customname, status, start, [end],
Crew1 = [1],
Crew2 = [2],
Crew3 = [3]
from
(
select salesordernumber, customname, status, start, [end], crewname,
row_number() over(partition by salesordernumber
order by crewname) seq
from yourtable
) d
pivot
(
max(crewname)
for seq in ([1], [2], [3])
) piv;
答案 1 :(得分:-1)
我不是100%了解枢轴,但我认为这应该有效。它基于我们在这里使用的支点。如果它不起作用,我可能已经在Pivot中切换了CrewName和SalesOrderNumber。
*注意对于注释掉的四列,您需要将外部查询加入表中,或者将它们包含在数据透视表中。我认为这两种选择都有效。
SELECT
SalesOrderNumber
--,CustomName
--,Status
--,Start
--,End
,[1]
,[2]
,[3]
FROM ( SELECT
SalesOrderNumber
,CrewName
FROM <TableName>
) As QueryToPivot
PIVOT (MAX(QueryToPivot.CrewName) FOR QueryToPivot.SalesOrderNumber IN ([1],[2],[3])) As QueryToPivot