簡體   English   中英

選擇一行,而不是多個具有相同ID和不同值的行

[英]Select one row instead multiple with same id and different value

我有一個問題,沒有人知道如何從SQL表中獲取此信息

id | value1 | value2 | value3
1       1      null     null
1       1       2       null
1       1       5        6
2       2      null     null
2       3       5       null
3       7      null     null
3       6       0        8

結果應該是

id | value1 | value2 | value3
1       1       5        6
2       3       5       null
3       6       0        8

編輯:結果應該是我有更多項目(值1,值2,值3)填充的行

edit2:上表是先前查詢的結果。 我有兩行或多行填充了相同的值字段,那么我應該獲取所有這些行,但如果不行,那么我應該僅獲取具有更多數據字段的行。 價值的重要性從右到左

注意。 我使用MSSQL

進行GROUP BY id只能獲取一次每個ID。 使用MIN (或MAX )選擇一個value1等作為id。

select id,
       min(value1) as value1,
       max(value2) as value2,
       min(value3) as value3
from tablename
group by id

編輯:

使用公用表表達式(cte),您還可以在其中計算每一行的非空值的數量。 返回該ID具有最大計數的所有cte行。

with cte as
(
select t.*, case when value1 is null then 0 else 1 end +
            case when value2 is null then 0 else 1 end +
            case when value3 is null then 0 else 1 end as valcount
from tablename
)
select t1.id, t1.value1, t1.value2, t1.value3
from cte t1
where t1.valcount = (select max(valcount) from cte t2 where t1.id = t2.id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM