SQL Server SQL -根据每个实体的条件获取值

ih99xse1  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(85)

我将表定义为:
| 实体名称|版本号|数值1|数值2|
| - -|- -|- -|- -|
| 一种|当前的|零值|零值|
| 一种|上一年|五十个|100个|
| B|当前的|二十五个|100个|
| C语言|当前的|四十|100个|
| C语言|上一年|零值|零值|
| 日|当前的|五十个|100个|
| 日|上一年|五十五|二百|
我想为每个实体提取Value1Value2,只要存在值,但首选项为'Version = Current'。因此,对于上面的示例,答案应为:
| 实体名称|版本号|数值1|数值2|
| - -|- -|- -|- -|
| 一种|上一年|五十个|100个|
| B|当前的|二十五个|100个|
| C语言|当前的|四十|100个|
| 日|当前的|五十个|100个|

cbeh67ev

cbeh67ev1#

这是 row_number 的一个典型用例,唯一复杂的是排序标准。
假设您希望两个值都为null的行具有最低的排名,请尝试以下操作:

select Entity, Version, Value1, Value2
from (
    select *,
        Row_Number() over(partition by entity 
                          order by 
                            case when Concat(value1,value2) = '' then 1 else 0 end,
                         version) rn
    from t
)t
where rn = 1;

请参阅Demo Fiddle

相关问题