我在这个主题上很新,需要帮助...... 如何在SQL中的一个字段的查询中隐藏重复项?例如,我有一个表
我想得到表
答案 0 :(得分: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
只有第一次出现col2
才会在结果集中写入值(值按col1
升序排序),否则值为NULL(在数据库术语中表示没有定义值) 。它使用TSQL ROW_NUMBER
函数,您可以阅读 here 。对ROW_NUMBER
函数的调用包含在CASE ... WHEN ... THEN ... END
条件表达式中,如果它是第一次出现某个值,则只能写出col2
的值。