一个愚蠢的问题:
我必须在同一列中将不同的if语句分组。我该怎么办?
if(string =' AAA',' A','其他'),if(string =' BBB',&# 39; B','其他')AS COLUMN 1
谢谢!
答案 0 :(得分:6)
用例陈述
Select
Case
When string="AAA" then "A_String"
When string="BBB" then "B_String"
When String in ("CCC","DDD") then "C_OR_D_String"
Else "Unknow_String"
End AS String_Class
From My_Table
希望这有帮助
答案 1 :(得分:2)
Simulating a Pivot Table
部分
使用条件语句将子选择查询的结果组织成行和列。在下面的示例中,搜索大多数修订后的维基百科文章的结果,这些文章以价值' Google'被组织成列,如果它们符合各种criterea,则显示修订计数。
SELECT
page_title,
/* Populate these columns as True or False, */
/* depending on the condition */
IF (page_title CONTAINS 'search',
INTEGER(total), 0) AS search,
IF (page_title CONTAINS 'Earth' OR
page_title CONTAINS 'Maps', INTEGER(total), 0) AS geo,
FROM
/* Subselect to return top revised Wikipedia articles */
/* containing 'Google', followed by additional text. */
(SELECT
TOP (title, 5) as page_title,
COUNT (*) as total
FROM
[publicdata:samples.wikipedia]
WHERE
REGEXP_MATCH (title, r'^Google.+') AND wp_namespace = 0
);
返回:
+---------------+--------+------+
| page_title | search | geo |
+---------------+--------+------+
| Google search | 4261 | 0 |
| Google Earth | 0 | 3874 |
| Google Chrome | 0 | 0 |
| Google Maps | 0 | 2617 |
| Google bomb | 0 | 0 |
+---------------+--------+------+
答案 2 :(得分:0)
这不是一个愚蠢的问题...在清理BQ中的数据时,这种情况经常发生,正如您期望的那样。
如果您要使用If语句编写查询,即使其他答案也可以很好地解决您的问题,这将是解决问题的方法:
IF(string = 'AAA','A',(IF(string = 'BBB','B,'other'))) as COLUMN,
在这种情况下,您只是嵌套IF语句,只要条件无效,只要这两个IF语句的“ other”值都相同,它将起作用。