首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个查询合并为一个查询

如何将两个查询合并为一个查询
EN

Stack Overflow用户
提问于 2015-07-14 11:08:57
回答 1查看 49关注 0票数 0

我试图将这两个查询合并为一个。有人能帮忙吗?

代码语言:javascript
复制
Query 1:
--------
SELECT 
  COUNT(Receiving_Log.Receiving_Log_Key) AS [Unresolved  Issues], 
  HUB.HUB_Name, 
  AVG(DATEDIFF(day, Receiving_Log.Rec_Date, GETDATE())) AS Avg
FROM HUB INNER JOIN Receiving_Log ON HUB.HUB_Key = Receiving_Log.HUB_Key
WHERE (Receiving_Log.Resolved = 0 )
GROUP BY HUB.HUB_Name

Query 2:
--------    
SELECT 
  COUNT(Receiving_Log.urgent) AS [Urgent  Issues], 
  HUB.HUB_Name, 
  AVG(DATEDIFF(day, Receiving_Log.Rec_Date, GETDATE())) AS Avg
FROM HUB INNER JOIN Receiving_Log ON HUB.HUB_Key = Receiving_Log.HUB_Key
WHERE (Receiving_Log.urgent = 0 and Receiving_Log.Resolved = 0)
GROUP BY HUB.HUB_Name
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-14 11:35:52

由于惟一使查询不同的是where子句中使用的条件,所以您应该能够将条件移到case表达式中,并这样做:

代码语言:javascript
复制
SELECT        
    SUM(CASE WHEN Receiving_Log.urgent = 0 AND Receiving_Log.Resolved = 0 THEN 1 ELSE 0 END) AS [Urgent  Issues], 
    SUM(CASE WHEN Receiving_Log.Resolved = 0 THEN 1 ELSE 0 END) AS [Unresolved  Issues], 
    HUB.HUB_Name, 
    AVG(DATEDIFF(day, CASE WHEN Receiving_Log.Resolved = 0 THEN Receiving_Log.Rec_Date END, GETDATE())) AS Avg_UNRESOLVED, 
    AVG(DATEDIFF(day, CASE WHEN Receiving_Log.urgent = 0 AND Receiving_Log.Resolved = 0 THEN Receiving_Log.Rec_Date END, GETDATE())) AS Avg_URGENT
FROM HUB 
INNER JOIN Receiving_Log ON HUB.HUB_Key = Receiving_Log.HUB_Key
GROUP BY HUB.HUB_Name;

这将产生如下结果:

代码语言:javascript
复制
Urgent Issues | Unresolved Issues | HUB_Name | Avg_UNRESOLVED | Avg_URGENT

另一个选项是使用union all合并两个查询的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31404908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档