Select 语句中的子查询
Subquery within Select Statement
我写了一个查询,return是一组代理的开放支持工单计数。当前查询 returns 超过 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 语句中编写一个子查询,以 return 计算相应的天数;类似下面的内容:
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
我基本上想在这里做的是将 Assignee 值从外部查询传递到内部查询...我知道这是不合法的,但希望它提供一些上下文我正在采取的方法。有什么方法可以将数据以临时变量的形式从外部查询传递到内部查询?
编辑:用户通知我缺少 FROM 子句,后来添加了这个。
您可以使用 SUM
个 CASE
语句更简单地完成此操作:
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
设置为您需要的任何聚合列。
我写了一个查询,return是一组代理的开放支持工单计数。当前查询 returns 超过 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 语句中编写一个子查询,以 return 计算相应的天数;类似下面的内容:
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
我基本上想在这里做的是将 Assignee 值从外部查询传递到内部查询...我知道这是不合法的,但希望它提供一些上下文我正在采取的方法。有什么方法可以将数据以临时变量的形式从外部查询传递到内部查询?
编辑:用户通知我缺少 FROM 子句,后来添加了这个。
您可以使用 SUM
个 CASE
语句更简单地完成此操作:
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
设置为您需要的任何聚合列。