2012-07-19 110 views
1

我在這裏看過,有很多涉及將兩條記錄合併成一條的問題,但我認爲我是一個獨特的問題。 我有一個使用sql查詢爲我們的票務軟件創建桌面小工具的軟件。我想跟蹤每個技術人員有多少個幫助臺門票,並且我有工作代碼。它生成的棒圖非常棒,但是,有時會有多名技術人員或技術人員和經理分配到一張票,而我無法提取該數據。該代碼是:將兩條記錄合併成一條

SELECT TECHNICIAN, COUNT(TECHNICIAN) AS TICKETS 
FROM TABLE 

(有一些額外的複雜性與內部連接,所以我可以通過員工的ID鏈接到他們的實際名稱表條形圖上得到僱員的姓名,但這是簡化版本)

這是我目前的結果集:

TECHNICIAN TICKETS 
Bob   5 
Bob, Harry 1 
Joe   6 
Mark   3 
Jeff   2 

和結果集我要的是:

TECHNICIAN TICKETS 
Bob   6 
Joe   6 
Mark   3 
Jeff   2 

如果上面的結果集進入了小工具,它會爲每條記錄創建一個欄。所以會有'bob'酒吧和'bob,harry'酒吧。另外,我知道我只需要技術人員,所以我不需要它來創建一個單獨的'哈利'記錄,只需添加'鮑勃在一起。另外,我對數據庫擁有隻讀訪問權限,因此創建用於保存數據的新表已不存在。

謝謝!

+3

你的表是不是也歸。在另外一張桌子上應該有兩排Bob和Harry在Ticket-1上 – codingbiz 2012-07-19 16:09:47

+3

假設哈利被排除在管理層之外,你怎麼區分「鮑勃,哈利」(給鮑勃一個人)和「鮑勃,喬」(一個是Bob,一個是Joe)? – MartW 2012-07-19 16:09:50

+0

另外你的第一個代碼示例是不正確的 - 你必須有一個GROUP BY你遺漏了。 – 2012-07-19 16:11:27

回答

1

假設TECHNICIAN列是255個字符:

SELECT Tech, Tickets = COUNT(*) 
FROM (
    SELECT 
    Tech = SUBSTRING 
      (
       TECHNICIAN, 1, 
       COALESCE(NULLIF(CHARINDEX(',', TECHNICIAN)-1, -1), 255) 
      ) 
    FROM dbo.[TABLE] 
) AS x 
GROUP BY Tech; 
+0

太棒了!現在唯一的問題是:我會在哪裏放置讓經理無效的狀態信息?例如: AND TECHNICIAN <>'HARRY' – 2012-08-08 16:06:04