Sql 如何在SSRS中订购以字符串形式给出的月份
如何在SSRS查询中获得月份(字符串)排序。 我在下拉列表中使用月作为参数 此代码似乎不起作用Sql 如何在SSRS中订购以字符串形式给出的月份,sql,sql-server,ssrs-2008-r2,Sql,Sql Server,Ssrs 2008 R2,如何在SSRS查询中获得月份(字符串)排序。 我在下拉列表中使用月作为参数 此代码似乎不起作用 SELECT DATENAME(month, DATEADD(month, 6, getdate())) AS MonthName UNION SELECT DATENAME(month, DATEADD(month, 7, getdate())) AS MonthName UNION SELECT DATENAME(month, DATEADD(month, 8, getdate())) A
SELECT DATENAME(month, DATEADD(month, 6, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 7, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 8, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 9, getdate())) AS MonthName
ORDER BY
CASE MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END
我会使用
值来简化这个过程。用你的逻辑:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY
CASE MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END;
但是,您可以将其进一步简化为:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY cast(MonthName + '1, 2000' as date);
我会使用值来简化这个过程。用你的逻辑:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY
CASE MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END;
但是,您可以将其进一步简化为:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY cast(MonthName + '1, 2000' as date);
简单地说,不要那样做。如果要按日历中的显示顺序(而不是按字母顺序)排序,则需要能够访问该数据:
SELECT DATENAME(MONTH, DATEADD(MONTH, V.I,GETDATE())) AS [MonthName]
FROM (VALUES(6),(7),(8),(9)) V(I)
ORDER BY V.I;
简单地说,不要那样做。如果要按日历中的显示顺序(而不是按字母顺序)排序,则需要能够访问该数据:
SELECT DATENAME(MONTH, DATEADD(MONTH, V.I,GETDATE())) AS [MonthName]
FROM (VALUES(6),(7),(8),(9)) V(I)
ORDER BY V.I;
我不确定您的期望值,但无论如何,您可以尝试:
select * from
(SELECT DATENAME(month, DATEADD(month, 6, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 7, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 8, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 9, getdate())) AS MonthName
) a
ORDER BY
CASE a.MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END
我不确定您的期望值,但无论如何,您可以尝试:
select * from
(SELECT DATENAME(month, DATEADD(month, 6, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 7, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 8, getdate())) AS MonthName
UNION
SELECT DATENAME(month, DATEADD(month, 9, getdate())) AS MonthName
) a
ORDER BY
CASE a.MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END
什么意思?不工作?不,我不工作,我会直截了当的。我的观点是“不工作”不会说太多。相反,如果问题失败,请添加错误消息,或者在问题中添加实际和预期的结果,因为在这种情况下,帮助你的人会花时间给你答案,而不是理解你的确切意思。这意味着什么-不工作?不,我不工作。我会直截了当。我的观点是“不工作”不会说太多。相反,如果问题失败,请添加错误消息,或者在问题中添加实际和预期的结果,因为在这种情况下,帮助你的人会花时间给你答案,而不是理解你的确切意思。谢谢戈登。谢谢戈登。