首页 > 解决方案 > 组合/加入 SQL 查询

问题描述

我有一个查询,它从 JSON 文档中获取数据,检查已返回哪些值,然后返回该计数。

SELECT 
     (CASE WHEN cat_name IS NOT NULL THEN 1 ELSE 0 END +
        CASE WHEN dog_name IS NOT NULL THEN 1 ELSE 0 END
       ) AS cat_dog_total 
from (select JSON_EXTRACT_SCALAR(data, '$.cat.name') as cat_name
             JSON_EXTRACT_SCALAR(data, '$.dog.name') as dog_name
      from table
     )

作为此查询的一部分,我还想返回cat_namedog_name并添加一个WHERE pet_store = 'london'

我不确定我应该在哪里添加其他参数,或者我是否应该加入子查询?

标签: sqlgoogle-bigquery

解决方案


SELECT cat_name, dog_name,
     (CASE WHEN cat_name IS NOT NULL THEN 1 ELSE 0 END +
        CASE WHEN dog_name IS NOT NULL THEN 1 ELSE 0 END
       ) AS cat_dog_total 
from (select JSON_EXTRACT_SCALAR(data, '$.cat.name') as cat_name
             JSON_EXTRACT_SCALAR(data, '$.dog.name') as dog_name
      from table
      WHERE pet_store = 'london'
     )

推荐阅读