Sql server 行在其自己的列中,具体取决于其日期,并以“x”为符号
亲爱的所有人,请帮助我,因为我是SQL Server的新手。我有一个select查询,当前生成以下结果: 医生姓名 团队 访问日期 阿斯博士 A. 5. 理学士 A. 4. Gh B 6博士 Nd C 31博士 博士7 使用以下查询: 从cActivity中选择d.DoctorName、t.TeamName、ca.VisitDate作为ca 在ca.DoctorId=d.Id上作为d的内部连接医生 在ca.TeamId=t.Id上以t的身份加入内部团队 其中,约在“2010年1月1日”和“2010年1月31日”之间访问 我想提出以下几点: 博士组1234567。。。访问31 博士作为一个x。。。两次 资深大律师A x。。。1次 Gh B x博士。。。1次 D C博士。。。x 1次使用:Sql server 行在其自己的列中,具体取决于其日期,并以“x”为符号,sql-server,datetime,pivot,Sql Server,Datetime,Pivot,亲爱的所有人,请帮助我,因为我是SQL Server的新手。我有一个select查询,当前生成以下结果: 医生姓名 团队 访问日期 阿斯博士 A. 5. 理学士 A. 4. Gh B 6博士 Nd C 31博士 博士7 使用以下查询: 从cActivity中选择d.DoctorName、t.TeamName、ca.VisitDate作为ca 在ca.DoctorId=d.Id上作为d的内部连接医生 在ca.TeamId=t.Id上以t的身份加入内部团队 其中,约在“2010年1月1日”和“201
你能帮我把它变成动态的吗?我的意思是让它不仅可以是31,还可以是28,30,31?你使用的是什么版本的SQL Server?我使用的是SQL Server 2008。。你能帮我回答我的问题吗?
SELECT d.doctorname,
t.teamname,
MAX(CASE WHEN ca.visitdate = 1 THEN 'x' ELSE NULL END) AS 1,
MAX(CASE WHEN ca.visitdate = 2 THEN 'x' ELSE NULL END) AS 2,
MAX(CASE WHEN ca.visitdate = 3 THEN 'x' ELSE NULL END) AS 3,
...
MAX(CASE WHEN ca.visitdate = 31 THEN 'x' ELSE NULL END) AS 31,
COUNT(*) AS visited
FROM CACTIVITY ca
JOIN DOCTOR d ON d.id = ca.doctorid
JOIN TEAM t ON t.id = ca.teamid
WHERE ca.visitdate BETWEEN '1/1/2010' AND '1/31/2010'
GROUP BY d.doctorname, t.teamname