如何有选择地选择分组列?我可以在里面使用CASE吗?它编译正常,但似乎在运行时没有工作。
示例:
GROUP BY o.organization_name ol.org_level_name, work_date,
CASE WHEN @org_level_type = 'Department' THEN jd.job_code ELSE jd.job_department_id END
感谢。
答案 0 :(得分:0)
这可能不是一个好主意。只需将其划分为2个单独的查询,以避免从一个适合所有查询的不必要的排序操作。
您可以将在表o
,jd
,ol
(没有GROUP BY
)上进行联接的大部分查询放入视图中以避免重复一遍。
(假设2列是兼容的数据类型)
select o.organization_name,
ol.org_level_name,
work_date,
code_or_dept
FROM ...
CROSS APPLY (SELECT CASE
WHEN @org_level_type = 'Department' THEN
jd.job_code
ELSE jd.job_department_id
END AS code_or_dept) c
GROUP BY o.organization_name,
ol.org_level_name,
work_date,
code_or_dept