[英]How do I select one row in SQL when another row has same id but a different value in a column?
[英]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.