2015-11-18 129 views
-1

有没有一种方法可以连接两列不同的功能?有没有一种方法可以连接具有不同功能的两列?

从例如,我可以使它看起来像Q3 2015年

enter image description here

SELECT convert(varchar(20), [Evaluation Date],(101)), 
     month([Evaluation Date]), year([Evaluation Date]), 
     case when month([Evaluation Date]) in ('1','2','3') then 'Q1' 
      when month([Evaluation Date]) in ('4','5','6') then 'Q2' 
      when month([Evaluation Date]) in ('7','8','9') then 'Q3' 
      when month([Evaluation Date]) in ('10','11','12') then 'Q4' 
     end as [Month], 
     year([Evaluation Date]) as [Year], 
     DATEADD(MONTH, DATEDIFF(MONTH, 0, [Evaluation Date]), 0) AS MonthYear, 
+0

另外,无论谁低估这个问题,请提供解释为什么下一次 –

+0

@AceTrajkov我没有低估这个问题,但没有要求有人必须提供一个理由。 – Siyual

+0

它不一定是一个要求,更多地把它看作是一种常见的礼貌。 如果问题被低估,这意味着缺少某些东西,无论是更多的信息,还是基本的“google it,******” 提供这个理由可以帮助海报和其他人更好地了解问题对于他们发布的下一个问题。 –

回答

1

,那么最简单的方法是使用datename()

select ('Q' + datename(quarter, [Evaluation Date]) + ' ' + 
     datename(year, [Evaluation Date]) 
     ) as QYYYY 
+0

这是正确的! – mezzokitestar

+0

不错,方式更简洁可读 –

1

如果你想获得Q YYYY试试这个

SELECT convert(varchar(20), [Evaluation Date],(101)), 
    month([Evaluation Date]), year([Evaluation Date]), 
    case when month([Evaluation Date]) in ('1','2','3') then 'Q1' 
     when month([Evaluation Date]) in ('4','5','6') then 'Q2' 
     when month([Evaluation Date]) in ('7','8','9') then 'Q3' 
     when month([Evaluation Date]) in ('10','11','12') then 'Q4' 
    end + ' ' + CONVERT(nvarchar, year([Evaluation Date])) 
+0

这是正确的! – mezzokitestar

相关问题