2016-04-29 54 views
1

我在SQL两个列如何两列组合在SQL

year month 
2016 4 
2014 5 

我想现在要做的就是这两列组合在一起,并得到时期

输出

year month result 
2016 4  201604 
2014 5  201405 

有没有办法做到这一点?

+4

列数据类型?如果是整数,则执行'year * 100 + month',如果字符做'年+月'。 – jarlh

+0

@jarlh不错的把戏与数字! –

+0

@jarlh,发布的答案。 –

回答

8

如果列的数据类型是整数,做

select year * 100 + month from tablename 
+0

这很酷... –

+0

为了更好地理解'(年* 100)+月' –

3

首先,您需要将它们CAST改为VARCHAR以允许连接。然后使用RIGHTmonth到垫0值:

WITH Tbl AS(
    SELECT 2016 AS [year], 4 AS [month] UNION ALL 
    SELECT 2014, 5 
) 
SELECT *, 
    CAST([year] AS VARCHAR(4)) + RIGHT('0' + CAST([month] AS VARCHAR(2)), 2) 
FROM Tbl 
+0

谢谢这效果很好 – RedRocket

1

假设两列是数值类型:

SELECT year, 
     month, 
     CAST(year as char(4)) + RIGHT('00' + CAST(month as varchar(2)), 2) as result 
FROM YourTable 
+0

很好的答案,这就是我正在寻找:) – RedRocket