计算sql中两列的不同值的计数

Bro*_*man 4 sql t-sql sql-server google-bigquery

我在数据库中有一个表,其中主键有相应的值。我想计算两列中的不同值。

我已经知道一种使用 union all 然后在结果表上应用 groupby 的方法。

Select Id,Brand1
into #Temp
from data
union all
Select Id,Brand2
from data

Select ID,Count(Distinct Brand1)
from #Temp
group by ID
Run Code Online (Sandbox Code Playgroud)

我们也可以仅使用临时表在大查询中执行相同的操作。

样本表

ID  Brand1  Brand2
1    A       B
1    B       C
2    D       A
2    A       D
Run Code Online (Sandbox Code Playgroud)

结果表

ID  Distinct_Count_Brand
1    3
2    2
Run Code Online (Sandbox Code Playgroud)

正如您在此列中看到的那样,Distinct_count_Brand 它正在计算 Brand1 和 Brand2 两列中 Brand 的唯一计数。

我已经知道一种方法(基本上是反透视),但想知道是否还有其他方法可以计算两列中的唯一值。

Tim*_*sen 5

我不知道 BigQuery 的怪癖,但也许您可以内联联合查询:

SELECT ID, COUNT(DISTINCT Brand)
FROM
(
    SELECT ID, Brand1 AS Brand FROM data
    UNION ALL
    SELECT ID, Brand2 FROM data
) t
GROUP BY ID;
Run Code Online (Sandbox Code Playgroud)