2012-07-19 112 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