我不记得有一个简单的方法可以做到这一点。我想避免使用CASE语句或每行操作的其他语句。
交易表
转换后我希望它看起来像什么
我知道我过去曾经做过一百万次,但是现在我正努力地奋斗。我知道有解决此问题的有效方法。
谢谢
答案 0 :(得分:2)
在pivot
语法内,您可以使用row_number()
窗口函数来强制数据透视表维护样本数据中的记录数。 order by
子句中指定的over
仅满足功能要求。
select p.client
, isnull(p.Calls, 0) as Calls
, isnull(p.Orders, 0) as Orders
, isnull(p.OrdRev, 0) as OrdRev
, isnull(p.WebOrde, 0) as WebOrde
from (
select a.client
, isnull(a.cType, 'Calls') as cType
, a.responses
, row_number() over (order by a.client asc) as row_nbr
from transaction_table as a
) as t
pivot(max(t.responses) for t.cType in ([Calls],[Orders],[OrdRev],[WebOrde])) as p