0

我是这个主题的新手,需要帮助...如何在 SQL 中仅一个字段的查询中隐藏重复项?例如,我有一张桌子

  • 1、122、123、6
  • 2、122、156、7
  • 3、122、188、6
  • 4、101、186、8

我想得到桌子

  • 122、123、6
  • 空,156, 7
  • 空,188, 6
  • 101、186、8

“Emty”意味着这个单元格应该是空的。谢谢你的帮助。

4

1 回答 1

2

这是一种可能的方法:

DECLARE @t TABLE (col1 INT, col2 INT, col3 INT, col4 INT)
INSERT @t VALUES 
(1, 122, 123, 69),
(2, 122, 156, 7),
(3, 122, 188, 6),
(4, 101, 186, 8)

SELECT  CASE WHEN ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col1) = 1 THEN col2 END col2_New
        , col3
        , col4
FROM    @t
ORDER BY
        col1

只有第一次出现的 acol2将其值写入结果集中(值按col1升序排序),否则该值为 NULL(在数据库术语中表示未定义值)。它使用 TSQL函数,你可以在这里ROW_NUMBER阅读它。对函数的调用包含在条件表达式中,如果它是某个值的第一次出现,则可以只写出值。ROW_NUMBERCASE ... WHEN ... THEN ... ENDcol2

于 2013-02-09T10:00:36.517 回答