如何使用SQL Server将表中的递归行显示为列

如何使用SQL Server将表中的递归行显示为列,sql,sql-server,Sql,Sql Server,我们有这样一张桌子: patientId Code ------------------------ ---- ChNOu1fny0ve2N4AeCcxqw== G309 ChNOu1fny0ve2N4AeCcxqw== I260 wFgf4sgQ3VZyFiKXlHnKdw== Z380 wFgf4sgQ3VZyFiKXlHnKdw== 1130600 patientId Code1 C

我们有这样一张桌子:

patientId                   Code
------------------------    ----
ChNOu1fny0ve2N4AeCcxqw==    G309
ChNOu1fny0ve2N4AeCcxqw==    I260
wFgf4sgQ3VZyFiKXlHnKdw==    Z380
wFgf4sgQ3VZyFiKXlHnKdw==    1130600
patientId                   Code1   Code2
------------------------    -----   --------
ChNOu1fny0ve2N4AeCcxqw==    G309    I260
wFgf4sgQ3VZyFiKXlHnKdw==    Z380    1130600
我想用患者代码将
patientId
显示在一行中。Sql输出应如下所示:

patientId                   Code
------------------------    ----
ChNOu1fny0ve2N4AeCcxqw==    G309
ChNOu1fny0ve2N4AeCcxqw==    I260
wFgf4sgQ3VZyFiKXlHnKdw==    Z380
wFgf4sgQ3VZyFiKXlHnKdw==    1130600
patientId                   Code1   Code2
------------------------    -----   --------
ChNOu1fny0ve2N4AeCcxqw==    G309    I260
wFgf4sgQ3VZyFiKXlHnKdw==    Z380    1130600
我们如何使用SQL Server实现这一点


谢谢

您需要使用
pivot
来执行此操作

SELECT patientId,[code1],[code2]
FROM  (SELECT *,
              'code'+ CONVERT(VARCHAR(20), Row_number() OVER(partition BY patientId ORDER BY (select null) )) piv_col
       FROM   Tablename) a
      PIVOT (Max(Code)
            FOR piv_col IN ([code1],
                            [code2])) piv 

G309
Z380
如何在
code1
下,为什么不
G309
1130600
。应该有另一列定义关系,因为每个患者Id都有特定的代码。表中的每个代码都是唯一的吗?如果没有,您可以旋转它。@coder3您是如何分离
code1
为什么这
1130600
代码不在
code1