【发布时间】:2011-12-01 08:57:40
【问题描述】:
我有一个问题来查询。
我创建的这个查询
WITH TATH(Priority, EntryDate) AS
(
SELECT TH.Priority as Priority, DATEADD(dd, 0, DATEDIFF(dd, 0, entryDate)) as EntryDate
FROM TicketAssignment TA, TicketHeader TH
WHERE TA.TicketID = TH.TicketID
AND TA.Company = 'IT'
AND TA.CurrentRole IN ('SA1B','SA1C','SDA')
)
SELECT Priority, convert(varchar(10), EntryDate,103) as EntryDate, COUNT(*) AS Count
FROM TATH
GROUP BY Priority, EntryDate
到目前为止的结果是:
Priority EntryDate Count
0 25/11/2011 1
1 25/11/2011 2
2 25/11/2011 36
3 25/11/2011 8
0 28/11/2011 3
1 28/11/2011 3
2 28/11/2011 37
3 28/11/2011 37
我想让结果看起来像这样
EntryDate Priorty0 Priority1 Priority2 Priority3
25/11/2011 1 2 36 8
28/11/2011 3 3 37 37
我认为我无法找到支点,但我无法做到。
如果支点不是一个好的解决方案,我必须搜索(或研究)什么?
你能帮我Q.Q吗?
【问题讨论】:
-
从您的帖子中实际上并不太清楚到目前为止您到底尝试了什么。您是否只是试图查找是否有built-in support for pivoting in SQL Server?或者您是否已经尽力掌握如何使用它?还是您已经尝试过该功能本身?请查看此线程的 Related 部分。它包含许多关于在 SQL Server 中进行透视的问题(也有示例)。另一方面,不清楚优先级列的数量是否应该在结果查询中固定。
-
@AndriyM 我在阅读 MSDN 页面后尝试了 Pivot。我达不到。当我尝试 Count 不合适时。我的问题是... DISTINCT(Entry date and Priority) 行进入列,Count 列进入行。对不起我的英语。
-
所以,我明白了,您在使用 PIVOT 时遇到了困难。我的另一个问题,关于优先级列的问题呢? 输出中是否应该总是正好有四个优先级列,如您的示例(
Priorty0、Priority1、Priority2、Priority3)? -
@AndriyM 是的。优先级的唯一值 0、1、2 或 3。
标签: sql-server-2008 pivot-table