2013-07-16 99 views
1
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等效项?将访问交叉表查询转换为T-SQL等效

回答

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 
+0

完美的作品。非常感谢你。 –

+0

你有一个SQL Server 2000/2005相当于(即案件时)吗? – dotnetN00b

+0

@ dotnetN00b看到这个答案 - http://stackoverflow.com/a/15745076/426671有一个版本使用CASE表达式 – Taryn