【发布时间】:2015-11-01 23:28:44
【问题描述】:
我正在构建一个 SSRS 报告来显示学生班级信息。 我有一个名为 class 的表,其中包含有关学生参加的班级的信息。
我的要求是显示上课的日期。例如:如果 Column Name Monday = 'Y' 那么我必须将日期显示为 [Mon]。我试过下面的代码。
SELECT
case when Monday ='Y' then'[Mon]' else '' end +case when Monday ='Y' then ',' else '' end +
case when Tuesday ='Y' then'[Tue]' else '' end +case when Tuesday ='Y' then ','else '' end +
case when Wednesday='Y' then'[Wed]' else '' end +case when Wednesday ='Y' then ',' else '' end +
case when Thursday ='Y' then'[Thu]' else '' end +case when Thursday ='Y' then ',' else '' end +
case when Friday ='Y' then'[Fri]' else '' end +case when Friday ='Y' then ',' else '' end +
case when Saturday ='Y' then'[Sat]' else '' end +case when Saturday ='Y' then ',' else '' end +
case when Sunday ='Y' then'[Sun]' else '' end as classday
FROM vw_Class_Without_Instructor
我得到如下输出。
在输出中,每行末尾都有一个额外的逗号。有什么方法可以在 select 语句本身中排除它?有没有其他方法可以获得输出?使用 case 语句似乎会减慢执行速度。
【问题讨论】:
-
您好,您需要一个用于替换逗号的查询或一个单独的查询来获得上述输出或两者兼而有之??
-
@Tarun 我两个都需要。我还担心由于过度使用案例而导致的任何性能损失
-
@bmsqldev 请检查我的答案。它应该工作。我通过减少案例数量提高了查询性能。坦率地说,您也可以使用
PIVOT。此外,使用INNER QUERY的解决方案与直select相比有点贵 -
我怎样才能使用枢轴。我认为枢轴用于将列转换为行
标签: sql-server tsql reporting-services ssms