我尝试获取一个答案数据库,该数据库为我提供了目的地美国和不同来源国家的所有数据。但是在一行中可能写成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
答案 0 :(得分: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的文档。
答案 1 :(得分:4)
这确实是一个AND / OR问题。
尝试:
SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft]
Where destination_country contains "US"
And (originCountries CONTAINS "CN" OR originCountries CONTAINS "HK")