如何使用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