sql server—在sql中,如何显示组的第一行并隐藏组其余部分的一列

bpzcxfmw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(537)

我正在尝试将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 server。

z9ju0rcb

z9ju0rcb1#

您真的应该在应用程序而不是数据库中执行这种处理。为什么?因为结果集表示无序集。依靠排序来理解数据会使结果变得脆弱。
但你可以。一种方法是:

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;

相关问题