获取重复记录的行值作为列

时间:2019-08-23 20:51:39

标签: sql sql-server

我已经弄乱了数据库记录,以至于我想纠正。我在提出查询时遇到问题。

基本上,这就是我的数据的样子:

   ---------------
   | Id | Value  |
   ---------------
   | 1  | John   |
   | 2  | John   |
   | 3  | Nick   |
   | 4  | Nick   |
   | 5  | Tom    |
   | 7  | Tom    |
   ---------------

我需要输出为

-------------------------------
   | Value |   Id1 |   Id2 |
   -------------------------------
   | John  |   1   |   2   |
   | Nick  |   3   |   4   |
   | Tom   |   5   |   7   |
   -------------------------------

我可以寻求帮助吗?

1 个答案:

答案 0 :(得分:2)

如果要查看两个值,它可能很简单

Select value
      ,id1 = min(ID)
      ,id2 = max(ID)
 From  YourTable
 Group By value
  

编辑-如果观察到两个以上

Select *
 From  (
        Select ID
              ,Value
              ,RN = row_number() over (partition by value order by id)
         From  YourTable
       ) src
 Pivot ( max(ID) for RN in ([1],[2],[3],[4]) ) pvt