在 SQL 中,如何显示组的第一行并在组的其余部分隐藏一列
In SQL, how can I show the first row of a group and hide one column in the rest of the group
我正在尝试将 SQL 查询导出到 Excel,我需要这种行为,但在任何地方都找不到。
这是我目前拥有的:
SELECT t1.c1, t2.c2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
|c1| c2 |
----------------
|a | sometext1 |
|a | sometext2 |
|a | sometext3 |
|a | sometext4 |
|b | sometext5 |
|b | sometext6 |
|b | sometext7 |
我想这样显示结果:
|c1| c2 |
|a | sometext1 |
| | sometext2 |
| | sometext3 |
| | sometext4 |
|b | sometext5 |
| | sometext6 |
| | sometext7 |
我只想显示每个组中的第一个项目,并隐藏其余项目以便不在 Excel 中显示。
我正在使用 SQL 服务器。
你真的应该在应用程序而不是数据库中进行这种类型的处理。为什么?因为结果集表示 无序 集。依靠排序来理解数据会使结果变得脆弱。
但你可以。一种方法是:
select (case when seqnum = 1 then c1 end) as c1, c2
from (select, t.*,
row_number() over (partition by c1 order by (select null)) as seqnum
from t
) t
order by c1, seqnum;
我正在尝试将 SQL 查询导出到 Excel,我需要这种行为,但在任何地方都找不到。
这是我目前拥有的:
SELECT t1.c1, t2.c2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
|c1| c2 |
----------------
|a | sometext1 |
|a | sometext2 |
|a | sometext3 |
|a | sometext4 |
|b | sometext5 |
|b | sometext6 |
|b | sometext7 |
我想这样显示结果:
|c1| c2 |
|a | sometext1 |
| | sometext2 |
| | sometext3 |
| | sometext4 |
|b | sometext5 |
| | sometext6 |
| | sometext7 |
我只想显示每个组中的第一个项目,并隐藏其余项目以便不在 Excel 中显示。 我正在使用 SQL 服务器。
你真的应该在应用程序而不是数据库中进行这种类型的处理。为什么?因为结果集表示 无序 集。依靠排序来理解数据会使结果变得脆弱。
但你可以。一种方法是:
select (case when seqnum = 1 then c1 end) as c1, c2
from (select, t.*,
row_number() over (partition by c1 order by (select null)) as seqnum
from t
) t
order by c1, seqnum;