iT邦幫忙

0

[已解決]SQL Server 合併年、月欄位顯示

  • 分享至 

  • xImage

各位好
想請問以下Table1的資料要如何下T-SQL才能下Table2的資料
就是要將TableYear TableMonth合併成一個欄位顯示,但1~9月前面要補零
感謝各位大神
圖片1

https://ithelp.ithome.com.tw/upload/images/20220503/201478424bQGnuIHEt.png

我先自己自問自答
SELECT id,
(
TableYear+Right('00'+Cast(TableMonth as varchar),2)
) AS YYYYMM

FROM Table1
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
rogeryao
iT邦超人 7 級 ‧ 2022-05-03 11:41:43

請參閱 : REPLICATE (Transact-SQL)
B. 使用 REPLICATE 和 DATALENGTH

參照後修正SQL如下,有跑出預期的成果

SELECT id,TableYear+REPLICATE('0',2-DATALENGTH(TableMonth))+TableMonth AS YYYYMM
FROM Table1
0
Zed_Yang
iT邦新手 3 級 ‧ 2022-05-03 11:48:13
CREATE TABLE Table1 (
   id int
 , TableYear NVARCHAR(4)
 , TableMonth NVARCHAR(4)
);

INSERT INTO Table1 values
(1, '2022', N'1'),
(2, '2022', N'2'),
(3, '2022', N'3'),
(4, '2022', N'10'),
(5, '2022', N'11');

SELECT id,TableYear+RIGHT('00'+TableMonth,2) AS YYYYMM
FROM Table1

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=921a4185d280f9f3f11bb6b9cdfb75a8

補充REPLICATE作法

CREATE TABLE Table1 (
   id int
 , TableYear VARCHAR(4)
 , TableMonth VARCHAR(4)
);

INSERT INTO Table1 values
(1, '2022', N'1'),
(2, '2022', N'2'),
(3, '2022', N'3'),
(4, '2022', N'10'),
(5, '2022', N'11');

SELECT id,TableYear+REPLICATE('0',2-DATALENGTH(TableMonth))+TableMonth AS YYYYMM
FROM Table1

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=89f002b052465592f3202361efc92b53

感謝Zed大的分享,兩個方法都可以得出預期的結果

0
may031556
iT邦新手 5 級 ‧ 2022-05-03 13:02:10
select * into #A from (values
 ('1','2022','1')
,('2','2022','2')
,('3','2022','3')
,('4','2022','10')
,('5','2022','11')
) as A([id],[TableYear],[TableMonth]);

select [id],  [TableYear]*100+[TableMonth] [YYYYMM]
from #A;

感謝may031556大的分享,有得出預期的結果

我要發表回答

立即登入回答