代码之家  ›  专栏  ›  技术社区  ›  Matt

BigQuery-当子查询不返回结果时,所有结果为零

  •  1
  • Matt  · 技术社区  · 1 年前

    我正试图形成一个查询,根据用户输入的变量对多个表中不同的行进行计数。

    但是一个或多个表可能为传递的{{Customer}}变量返回零结果,

    当我运行传递在所有表中都有数据的{{Customer}}的查询时,我会得到所有表的预期计数;但是,如果其中一个表返回零,那么所有结果都为零。

    我试着把它分成不同的计数,只得到三个结果,但同样,只要一个结果为零,所有结果都为零。

    当返回零结果时,是否有人能够提供如何忽略子查询的建议,或者提供在多个表中获得不同结果计数的更好方法?

        SELECT COUNT (DISTINCT x.LicenseKey) + COUNT (DISTINCT y.LicenseKey) + COUNT (DISTINCT z.LicenseKey) AS Number_Of_Licenses
    FROM (
        SELECT LicenseKey
        FROM `table_1` 
        WHERE Customer LIKE {{Customer}}
        AND Trial = false
        ) as x,
        (SELECT LicenseKey
        FROM `table_2`
        WHERE Customer LIKE {{Customer}}
        AND Trial = false
        ) as y,
        (SELECT LicenseKey
        FROM `table_3`
        WHERE Customer LIKE {{Customer}}
        AND Trial = false
        ) as z
    

    如有任何帮助,我们将不胜感激。:)

    1 回复  |  直到 1 年前
        1
  •  1
  •   nbk    1 年前

    由于所有计数查询都将返回标量值,因此可以直接使用它们

    SELECT 
    (
    SELECT COUNT(DISTINCT  LicenseKey)
    FROM `table_1` 
    WHERE Customer LIKE {{Customer}}
    AND Trial = false
    ) +
    (SELECT COUNT(DISTINCT  LicenseKey)
    FROM `table_2`
    WHERE Customer LIKE {{Customer}}
    AND Trial = false
    ) +
    (SELECT COUNT(DISTINCT  LicenseKey)
    FROM `table_3`
    WHERE Customer LIKE {{Customer}}
    AND Trial = false
    ) as COUNT_LicenseKey