我需要编写一个case语句,它将对返回的零记录起作用。类似的东西:
SElect
Case
when (
Select *
from Latest_LI
Except distinct
SELECT *
FROM PRIOR_LI
)-- This case will return zero records
= null
Then
1
WHEN
(
Select *
from Latest_LI
Intersect distinct
SELECT *
FROM PRIOR_LI
)-- This case will return zero records
> 0
Then
2
END
在SQL中,我将分配一个变量并将其设置为0或1,并编写一个IF语句来进行正确的选择。
我担心的是case语句只用于从表中选择行,我想根据结果将其用于完整选择。
感谢任何帮助。
答案 0 :(得分:3)
你的问题有点通用 - 所以我的回答是:o)
下面的示例适用于BigQuery Standard SQL
#standardSQL
SELECT CASE
WHEN (
SELECT COUNT(1) FROM (
SELECT * FROM `project.dataset.Latest_LI`
EXCEPT DISTINCT
SELECT * FROM `project.dataset.PRIOR_LI`
)
) = 0 THEN 1
WHEN (
SELECT COUNT(1) FROM (
SELECT * FROM `project.dataset.Latest_LI`
INTERSECT DISTINCT
SELECT * FROM `project.dataset.PRIOR_LI`
)
) > 0 THEN 2
END
或略有重构的版本
#standardSQL
SELECT
CASE
(SELECT COUNT(1) FROM (
SELECT * FROM `project.dataset.Latest_LI`
INTERSECT DISTINCT
SELECT * FROM `project.dataset.PRIOR_LI`
))
WHEN 0 THEN 1
ELSE 2
END
希望你有个主意