2014-11-04 85 views
1

我尝试获取答案数据库,该数据库为我提供目的地美国和不同来源国家的所有数据。然而,一行中可能会写CN,HK,JP--意思是很多事情。所以,我写的查询如下,但答案仅包含来源CN或HK,但不包含“CN,JP,HK”。
什么是正确的代码?大查询 - 和/或运营商

SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft] 
Where destination_country contains "US" 
And originCountries In ("CN", "HK") 

行originCountries destinationCountries createWeek
1 CN US 2014W30
2 CN US 2014W30
3 CN US 2014W30
4 CN US 2014W30
5 HK US 2014W30
6 HK US 2014W30

回答

2

这确实是一个AND/OR问题。

尝试:

SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft] 
Where destination_country contains "US" 
And (originCountries CONTAINS "CN" OR originCountries CONTAINS "HK") 
4

您的origin_country数据目前平铺在originCountries字段中。您需要将此(拼合)字段扩展为重复字段。我不知道你的确切架构,但沿线的东西:

SELECT * FROM 
    (SELECT destination_country, SPLIT(originCountries, ",") as origin_country, 
    createDate FROM [DataWarehouse.Draft]) 
WHERE destination_country contains "US" And origin_country IN ("CN", "HK") 

应该做你所需要的。我不知道这个版本是否运行正常,但它应该做你想要的过滤。

请参阅string function reference文档中的SPLIT文档以及有关nested and repeated fields的文档。