sql - Transpose rows into columns in SQL Server, I try it using pivot but, expected result is not reached
问题描述
Transpose rows into columns in SQL Server, I try it using pivot but, expected result is not reached, using pivot getting Max value only
CREATE TABLE [dbo].[test]
(
[patientid] [int] NULL,
[sourcename] [varchar](200) NULL,
[identifier] [varchar](100) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'SIN', N'2663563')
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'SIN', N'2453433')
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'MED', N'534545')
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'MED', N'212334')
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'NXG', N'8678')
INSERT [dbo].[test] ([patientid], [sourcename], [identifier])
VALUES (100, N'NXG', N'2131232334')
Expected output:
解决方案
Use row_number()
and conditional aggregation:
select patientid,
max(case when sourcename = 'SIN' then identifier end) as sin,
max(case when sourcename = 'MED' then identifier end) as med,
max(case when sourcename = 'NXG' then identifier end) as nxg
from (
select t.*, row_number() over(partition by sourcename, sourcename order by identifier) rn
from test t
) t
group by patientid, rn
推荐阅读
- java - 无法在 Visual Studio Code 中更新 Java
- python - pandas 基于日期的交错变换
- anchor - 将 onmouseover() 函数附加到所有锚标签中的每个 href,如果锚标签有子元素?
- html - iframe 标签中的 html 的目的是什么?
- docker - 入口无法访问基于域的路由
- python - 用python找不到文件
- python - 将两个指标写入同一个 tensorboard 图 - tensorflow v2
- web-bluetooth - 您可以操作调用 requestDevice() 后显示的网络蓝牙选择器吗?
- ios - SwiftUI/组合监听 ObservableObject 中的多个发布者
- c# - 在同一解决方案中另外向 ASP.NET Core MVC 公开 Web API