将交易枢转到指标

时间:2019-01-04 23:01:44

标签: sql-server tsql sql-server-2014

我不记得有一个简单的方法可以做到这一点。我想避免使用CASE语句或每行操作的其他语句。

交易表

client  ctype

转换后我希望它看起来像什么

enter image description here

我知道我过去曾经做过一百万次,但是现在我正努力地奋斗。我知道有解决此问题的有效方法。

谢谢

1 个答案:

答案 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