首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google BigQuery -将两个查询合并为一个(sql)

Google BigQuery -将两个查询合并为一个(sql)
EN

Stack Overflow用户
提问于 2022-07-24 09:57:37
回答 2查看 63关注 0票数 0

在使用SQL的Google BigQuery中,我有两个独立的查询,我想合并成一个。它们都从相同的表中提取相同的字段,但由于时间、项和位置的不同而不同。我不希望数据从一个查询交叉到另一个查询,但我希望输出在一起。

查询1

代码语言:javascript
复制
SELECT 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Group
,Revenue_Value
,COUNT(Ticket_Number)   
FROM  
Revenue_Table  
WHERE 
Revenue_Date ("201501","201502","201601",201602")  
AND Item_Number ("2987","9876","2345")  
AND Location_Number ("23456","23456","0987")  
AND (Revenue_Group NOT IN ("123B","765C",345G","3456") 
or Revenue_Group is null)  
GROUP BY 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Value 
,Revenue_Group

查询2

代码语言:javascript
复制
SELECT 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Group
,Revenue_Value 
,COUNT(Ticket_Number)  
FROM  
Revenue_Table  
WHERE 
Revenue_Date ("201502","201503","201602",201603")  
AND Item_Number ("1678","2225","1098")  
AND Location_Number ("09876","23456","2111")  
AND (Revenue_Group NOT IN ("123B","765C",345G","3456") or Revenue_Group is null)  
GROUP BY 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Value 
,Revenue_Group

以下是每个查询的唯一数据:

日期查询1 Revenue_Date ("201501“、"201502”、“201601”、201602)

查询2 Revenue_Date ("201502“、"201503”、“201602”、201603)

项目查询1 Item_Number ("2987“、"9876”、"2345")

查询2 Item_Number ("1678“、"2225”、"1098")

位置查询1 Location_Number ("23456“、"23456”、"0987")

查询2 Location_Number ("09876“、"23456”、"2111")

我希望这两个查询分别提取数据(即,我不希望在日期201501 (YYYYMM)或位置23456中的项目1678的收入),一旦数据被提取,我希望它显示在输出中的一个表中。

有人能帮上忙吗。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-24 10:03:44

这看起来确实很直截了当,还是我遗漏了什么?你试过使用UNION ALL吗。这将将您的两个结果合并为一个:

您需要确保由UNIONUNION ALL分隔的两个查询都需要有完全相同的列数。

代码语言:javascript
复制
SELECT 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Group
,Revenue_Value
,COUNT(Ticket_Number)   
FROM  
Revenue_Table  
WHERE 
Revenue_Date ('201501','201502','201601','201602')  
AND Item_Number ('2987','9876','2345')  
AND Location_Number ('23456','23456','0987')  
AND (Revenue_Group NOT IN ('123B','765C','345G','3456') 
OR Revenue_Group IS NULL)  
GROUP BY 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Value 
,Revenue_Group

UNION ALL

SELECT 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Group
,Revenue_Value 
,COUNT(Ticket_Number)  
FROM  
Revenue_Table  
WHERE 
Revenue_Date ('201502','201503','201602','201603')  
AND Item_Number ('1678','2225','1098')  
AND Location_Number ('09876','23456','2111')  
AND (Revenue_Group NOT IN ('123B','765C','345G','3456') OR Revenue_Group IS NULL)  
GROUP BY 
Revenue_Date
,Item_Number 
,Location_Number
,Revenue_Value 
,Revenue_Group
票数 0
EN

Stack Overflow用户

发布于 2022-07-24 10:16:40

或者在这样的一个查询中尝试:

代码语言:javascript
复制
SELECT Revenue_Date, Item_Number ,Location_Number, Revenue_Group, Revenue_Value,COUNT (Ticket_Number)
FROM Revenue_Table
WHERE
    (( Revenue_Date ("201501","201502","201601",201602")
      AND Item_Number ("2987","9876","2345")
      AND Location_Number ("23456","23456","0987")
    )
    OR
    (
     Revenue_Date ("201502","201503","201602",201603")
     AND Item_Number ("1678","2225","1098")
     AND Location_Number ("09876","23456","2111")
    ))
    AND (Revenue_Group NOT IN ("123B","765C",345G","3456") or Revenue_Group is null)
GROUP BY Revenue_Date, Item_Number ,Location_Number,Revenue_Value ,Revenue_Group;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73097367

复制
相关文章

相似问题

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