票证有一个ID,TicketNbr和Time Entries有一个ID Time_RecID。票证有0,1或可能更多与TicketNbr相关的时间条目。SQL GROUP BY Aggregate
我想产生像这样的列表:
Time Entries | Tickets
10 | #
9 | #
8 | #
7 | #
6 | #
5 | #
4 | #
3 | #
2 | #
1 | #
凡#的门票数量。
数据来自两个表:v_rpt_Service(TicketNbr)和v_rpt_Time(Time_RecID)。我所有的相关数据都是使用下面的SQL发现的:
SELECT
s.TicketNbr, t.Time_RecID
FROM
v_rpt_Service s
LEFT JOIN v_rpt_time t on s.TicketNbr = t.SR_Service_RecID
我在哪里挣扎的是聚合。理想情况下,我正在寻找的是:
SELECT
COUNT(T.Time_recID) as Time_Entries, COUNT(DISTINCT(s.TicketNbr)) as Tickets
FROM
v_rpt_Service s
LEFT JOIN v_rpt_time t on s.TicketNbr = t.SR_Service_RecID
GROUP BY
COUNT(t.Time_recID)
导致这个错误:
Msg 144, Level 15, State 1, Line 8 Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause.
如何重构初始查询给我像输出上面的列表?
了它!我必须做的唯一改变是左加入 - T.Time_RecID是时间条目的ID,TicketNbr是门票的ID。我现在看到我提出了错误的问题(我已更新) - s.TicketNbr = t.SR_Service_RecID上的LEFT JOIN v_rpt_Time t。 谢谢,西蒙!这做到了! – dijikul 2014-10-30 22:12:55
@dijikul,很高兴我能帮上忙。请标记为答案,以便其他人知道您的问题已解决。 – Simon1979 2014-10-30 22:16:23