【问题标题】:Convert Access Crosstab Query to T-SQL Equivalent将 Access 交叉表查询转换为 T-SQL 等效项
【发布时间】:2013-07-14 22:03:25
【问题描述】:
TRANSFORM Count(qryEAOCalls.CALLID) AS CountOfCALLID
SELECT qryEAOCalls.TAPSTAFFNAME, Count(qryEAOCalls.CALLID) AS [Total Calls]
FROM qryEAOCalls
WHERE qryEAOCalls.CALLDATE Between #1/1/1900# And Date()
GROUP BY qryEAOCalls.TAPSTAFFNAME
PIVOT qryEAOCalls.Status In ("Unassigned","Open","Closed","Follow-up Needed");

如何将其转换为 T-SQL 等效项?

【问题讨论】:

    标签: tsql ms-access pivot transform crosstab


    【解决方案1】:

    您应该能够使用类似于以下内容的内容:

    select TAPSTAFFNAME,
      Unassigned, Open, Closed, [Follow-up Needed],
      TotalCalls
    from
    (
      select e.TAPSTAFFNAME,
        e.CALLID,
        e.Status, 
        count(*) over(partition by e.TAPSTAFFNAME) TotalCalls
      from qryEAOCalls e
      where e.CALLDATE >= '1900-01-01'
        and e.CALLDATE <= getdate()
    ) src
    pivot
    (
      count(CALLID)
      for status in (Unassigned, Open, Closed, [Follow-up Needed])
    ) piv
    

    【讨论】:

    • 完美运行。非常感谢。
    • 你有 sql server 2000/2005 等价物吗?
    • @dotnetN00b 看到这个答案——stackoverflow.com/a/15745076/426671 有一个使用 CASE 表达式的版本
    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多