繁体   English   中英

Select语句中的子查询

[英]Subquery within Select Statement

我编写了一个查询,该查询返回一组座席的开放支持票数。 该查询当前返回已超过5天的票证:

SELECT groupname, 
       assignee, 
       Count(*) AS [Tickets Older Than 5 Days] 
FROM   zendeskunclosedticketexport 
WHERE  ( groupname = 'DC Web Ops' 
          OR groupname = 'DC Maintenance' 
          OR groupname = 'DC QC1' ) 
       AND ticketcreateddate < Dateadd(day, -5, Getdate()) 
GROUP  BY groupname, 
          assignee 
ORDER  BY groupname, 
          Count(*) DESC

查询结果样本:

groupname       assignee                Tickets Older Than 5 Days

DC Maintenance  Mubarak Ali             12
DC Maintenance  Abirami Selvanathan     11
DC Maintenance  Jemima Mohanraj         6
DC Maintenance  Praveena Rajan          6
DC Maintenance  Rahul Ramesh            6
DC Maintenance  Saravanan Varadharajan  6
DC Web Ops  Kasey Barber                16
DC Web Ops  Jamie Raines                11
DC Web Ops  Keith Washington            10
DC Web Ops  Patricia Gomez Imvendorize  6

我一直在尝试包含10天,30天等的列,但是一直无法做到。 我试图在select语句中编写一个子查询,以返回相应天数的计数; 如下所示:

SELECT groupname, 
       assignee [currentAssignee],


       (SELECT Count(*) AS [Tickets Older Than 5 Days] 
            FROM   zendeskunclosedticketexport 
            WHERE  ( 
                    ticketcreateddate < Dateadd(day, -5, Getdate())
                    AND
                    assignee = [currentAssignee]
        )

       (SELECT Count(*) AS [Tickets Older Than 10 Days] 
            FROM   zendeskunclosedticketexport 
            WHERE  ( 
                    ticketcreateddate < Dateadd(day, -10, Getdate())
                    AND
                    assignee = [currentAssignee]
        )

        (SELECT Count(*) AS [Tickets Older Than 30 Days] 
            FROM   zendeskunclosedticketexport 
            WHERE  ( 
                    ticketcreateddate < Dateadd(day, -30, Getdate())
                    AND
                    assignee = [currentAssignee]
        )
FROM   zendeskunclosedticketexport

我在这里基本上想做的是将外部查询的受让人值传递到内部查询...我知道,这是不合法的,但希望它能为我提供的方法提供一些背景信息服用。 有什么方法可以将数据以临时变量的形式从外部查询传递到内部查询?

编辑:用户通知我,我缺少FROM子句,此后添加了它。

您可以使用CASE语句的SUM来简化此操作:

SELECT
    groupname,
    assignee,
    SUM(CASE WHEN ticketcreateddate < DATEADD(DAY, -5, GETDATE()) THEN 1 ELSE 0 END) AS [Tickets Older Than 5 Days],
    SUM(CASE WHEN ticketcreateddate < DATEADD(DAY, -10, GETDATE()) THEN 1 ELSE 0 END) AS [Tickets Older Than 10 Days],
    SUM(CASE WHEN ticketcreateddate < DATEADD(DAY, -30, GETDATE()) THEN 1 ELSE 0 END) AS [Tickets Older Than 30 Days]
FROM
    zendeskunclosedticketexport
WHERE
    groupname IN ('DC Web Ops', 'DC Maintenance', 'DC QC1')
GROUP BY
    groupname,
    assignee
ORDER BY
    groupname

您可以将ORDER BY设置为所需的任何汇总列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM