Sql server 行在其自己的列中,具体取决于其日期,并以“x”为符号

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

亲爱的所有人,请帮助我,因为我是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次使用:


你能帮我把它变成动态的吗?我的意思是让它不仅可以是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