【问题标题】:SQL duplicate values in multiple columnsSQL 多列中的重复值
【发布时间】:2016-10-11 17:54:05
【问题描述】:

我有一个带有重复 ID 的表,但第二列中有其他值。 我不需要使用 DISTINCT 删除所有重复项,而是需要 1 行的 ID 和几列的第二列中的值。

这就是我的意思:(必须成为结果)

【问题讨论】:

  • 你也使用了哪个DBMS标签
  • 请指定,结果表中的列数是常量(即您知道源表第二列的所有可能值)还是动态增长(您不知道第二列的所有可能值)。
  • 第二列应该是动态的。

标签: sql sql-server pivot


【解决方案1】:

好的,我已经设法解决了这个问题:

WITH cte AS (SELECT top 1000 *, ROW_NUMBER()OVER(PARTITION BY
id ORDER BY id) as RN FROM dbo.books) SELECT top
1000 a.id, a.category
, b.category as category2
, c.category as category3
, d.category as category4
from cte a
LEFT join cte b
on a.id = b.id
and a.RN = b.RN -1
LEFT JOIN cte c
ON a.id = c.id
AND a.RN = c.RN -2
LEFT JOIN cte d
ON a.id = d.id
AND a.RN = d.RN -3
WHERE a.RN = 1

【讨论】:

  • 我仍然面临的问题是我必须将此查询与另一个合并。我有另一个查询,它有一个简单的 SELECT FROM WHERE 语句,但有一个内部连接(dbo.books)。我无法从这些中进行 1 个查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 2020-12-06
相关资源
最近更新 更多