Tsql 如何将行转换为列?
可能是一个简单的方法,有没有一种方法可以快速转换我的数据,以便它可以跨行而不是按行读取 上面是电流输出,但希望它能在eg中读取Tsql 如何将行转换为列?,tsql,pivot,transpose,Tsql,Pivot,Transpose,可能是一个简单的方法,有没有一种方法可以快速转换我的数据,以便它可以跨行而不是按行读取 上面是电流输出,但希望它能在eg中读取 AttendanceNumber, ExamDate, ExamCode1, ExamCode2, ExamCode3, .......ExamCode20 我的sql是 SELECT [AttendanceNumber] ,[ExaminationDate] ,[ExamExaminationCode] FROM [Radioth
AttendanceNumber, ExamDate, ExamCode1, ExamCode2, ExamCode3, .......ExamCode20
我的sql是
SELECT [AttendanceNumber]
,[ExaminationDate]
,[ExamExaminationCode]
FROM [Radiotherapy].[dbo].[tblRadiologyData] rd
where rd.ExaminationDate >= '01 april 2016'
and rd.AttendanceSiteCode IN('CNM','RNM')
ORDER BY rd.LocalPatientIdentifier, rd.ExaminationDate
您可以将条件聚合与
行数()一起使用:
哇,太棒了,现在我有了数据,可以显示组合的数量和计数吗(例如ExamCode1,ExamCode2组合出现x次。@Simon我不确定我是否理解您的需要。.组合是什么意思?可以解决它,但是没有办法对顺序进行排序,因为每个考勤号的考试日期都是相同的,所以每次我运行它都会给我一个不同的输出!好的,现在排序,按Ra排序diologyID是每名参与者的增量,感谢您在这方面的所有帮助!您应该接受Sagi的回答@Simon,因为这显然是一个很好的解决方案
SELECT s.attendanceNumber,s.examinationDate,
MAX(CASE WHEN s.rnk = 1 THEN s.ExamExaminationCode END) as examCode1,
MAX(CASE WHEN s.rnk = 2 THEN s.ExamExaminationCode END) as examCode2,
MAX(CASE WHEN s.rnk = 3 THEN s.ExamExaminationCode END) as examCode3,
..... As many as you need
FROM (
SELECT [AttendanceNumber]
,[ExaminationDate]
,[ExamExaminationCode]
,ROW_NUMBER() OVER(PARTITION BY [AttendanceNumber] ORDER BY [ExaminationDate]) as rnk --Ordered by date ASC
FROM [Radiotherapy].[dbo].[tblRadiologyData] rd
where rd.ExaminationDate >= '01 april 2016'
and rd.AttendanceSiteCode IN('CNM','RNM') ) s
GROUP BY s.attendanceNumber,s.examinationDate