1 sql sql-server sql-server-2008
我正在处理存储过程,我正在尝试减小IF块的大小,并想知道是否可以根据参数确定GROUP BY子句.我会告诉你我的意思:
这不是SQL代码,而是写成我想要实现的内容......
SELECT...
GROUP BY
IF @groupBy = 0
DATEPART(yy, MyDBDateField)
ELSEIF @groupBy = 1
DATEPART(yy, MyDBDateField),
DATEPART(m, MyDBDateField)
ELSE
DATEPART(yy, MyDBDateField),
DATEPART(m, MyDBDateField),
DATEPART(d, MyDBDateField)
Run Code Online (Sandbox Code Playgroud)
所以,我正在尝试按年份,月份或日期对数据进行分组,具体取决于参数.听起来很简单,但看起来我必须将语句复制粘贴到IF块中.
任何帮助表示感谢 - 谢谢!
你可以CASE它:但你也需要在SELECT中使用相同的表达式
SELECT
...,
DATEPART(yy, MyDBDateField),
CASE WHEN @groupBy = 1 THEN DATEPART(m, MyDBDateField) ELSE NULL END,
CASE WHEN @groupBy = 2 THEN DATEPART(d, MyDBDateField) ELSE NULL END
FROM
GROUP BY
DATEPART(yy, MyDBDateField),
CASE WHEN @groupBy = 1 THEN DATEPART(m, MyDBDateField) ELSE NULL END,
CASE WHEN @groupBy = 2 THEN DATEPART(d, MyDBDateField) ELSE NULL END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |