票證有一個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