基于返回零记录的案例陈述。

时间:2018-04-12 11:53:02

标签: google-bigquery

我需要编写一个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语句只用于从表中选择行,我想根据结果将其用于完整选择。

感谢任何帮助。

1 个答案:

答案 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

希望你有个主意