我想在像2011年Q4的输出(财务YR-QTR)抵达T-SQL - 财政季度
我可以做到这一点:
CASE -- Results: 2011-Q4 (Financial Yr-Qtr)
WHEN MONTH(MyDate) BETWEEN 1 AND 3 THEN concat((YEAR(MyDate) - 1), '-', 'Q4')
WHEN MONTH(MyDate) BETWEEN 4 AND 6 THEN concat((YEAR(MyDate) - 1), '-', 'Q1')
WHEN MONTH(MyDate) BETWEEN 7 AND 9 THEN concat((YEAR(MyDate) - 0), '-', 'Q2')
WHEN MONTH(MyDate) BETWEEN 10 AND 12 THEN concat((YEAR(MyDate) - 0), '-', 'Q3')
END AS FYrQtr
但可以在相同的输出来实现没有使用CONCAT? (我只有2008年在工作; CONCAT在2012年抵达)。
谢谢。
'CONCAT('X','Y')'='ISNULL('X','')+ ISNULL('Y',' “)'。也许你可以试试看。另外,你应该养成在将数字连接到字符串之前明确地将数字转换为varchar的习惯 –
更长期的考虑使用日历表来定义你的宿舍(这可能会也可能不适合你的要求) –
在'2012'中,你可以简单地做:'SELECT CONCAT(YEAR(@Date),'-Q',DATEPART(QUARTER,@Date))' – gotqn