如果列值存在则SQL查询进行分组,否则列出所有记录

问题描述 投票:0回答:1

我在 SQL 数据库中有一些报告。有些报告有报告编号,有些报告没有报告编号。

报告_id 报告创建者 版本 报告编号
1 约翰·史密斯 1 101
2 约翰·史密斯 2 101
3 杰克·约翰逊
4 玛德琳·乔

我想对具有报告编号的报告进行分组,并列出所有没有报告编号的报告。 所以我应该得到这样的结果:

报告_id 报告创建者 版本 报告编号
1 约翰·史密斯 1 101
3 杰克·约翰逊
4 玛德琳·乔

我应该如何编写 SQL 查询?

注意:我已经在使用

UNION
来解决这个问题,但正在寻找更好的解决方案。

谢谢你。

sql sql-server group-by
1个回答
0
投票

使用

versions
对每个
report_created_by
进行排序后可以得到行号,然后选择第一条记录:
row_number() over ()

db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.