iT邦幫忙

0

MSSQL TALBE 文字+年月要怎麼寫呢?

XYZ 2023-12-28 17:16:39930 瀏覽
  • 分享至 

  • xImage

大家好,

我的TALBE名稱需要用TEST+當年當月如今天是112年09月
我的TALBE名稱是TEST11209
下個月我的TALBE名稱是TEST11210
SELECT * FROM TEST_+ SUBSTRING(convert(varchar,DATEADD(MONTH,0,getdate()),112),1,6) - 191100

出現錯誤訊息如下
訊息 102,層級 15,狀態 1,行 3
接近 '+' 之處的語法不正確。

請問應怎麼改才正確?

看更多先前的討論...收起先前的討論...
Nash iT邦新手 4 級 ‧ 2023-12-28 17:36:44 檢舉
寫在回答處了
不好意思
XYZ iT邦新手 4 級 ‧ 2023-12-29 11:43:11 檢舉
不好意思
我寫的訊息讓大家誤解了
我的table名稱固定是TEST_+年月(當下)
每月會倒入資料到資料庫,
12月那個倒入的Table名稱取名TEST_11212
每月都要撈資料,我寫了數個VIEW我不想一一去改Table名稱
所以希望數個view Table名稱可以抓動態的年月
這個要怎麼寫
用+不能串連2個字串嗎?
因為from不能 本身動態取表格 ~
要自己寫程式自動產生每月表格字串
你要串的話~就是用組合SQL字串在查詢~
或者你可以思考 從 sys.tables 裡面查詢新的表格名稱出來~

select name
from sys.tables
where name like 'TEST_%'
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Nash
iT邦新手 4 級 ‧ 2023-12-28 17:41:40

DECLARE @YearMonth NVARCHAR(6);
SET @YearMonth = FORMAT(GETDATE(), 'yyMM');

DECLARE @TableName NVARCHAR(50);
SET @TableName = 'TEST' + @YearMonth;

DECLARE @SqlQuery NVARCHAR(MAX);
SET @SqlQuery = 'SELECT * FROM ' + QUOTENAME(@TableName);

EXEC sp_executesql @SqlQuery;

加個防呆吧😂
若沒有表格就會查詢錯誤了~

0
純真的人
iT邦大師 1 級 ‧ 2023-12-28 19:10:20

試試~

declare @TableName varchar(11) = FORMAT(dateadd(year,-1911,Convert(date,getdate())), N'TESTyyyMM')
declare @TableNameNext varchar(11) = FORMAT(dateadd(year,-1911,dateadd(m,1,Convert(date,getdate()))), N'TESTyyyMM')
declare @Sql varchar(max) = 'select * from ' + @TableNameNext

--這個月
print @TableName
--下個月
print @TableNameNext
--SQL字串組合
print @Sql

IF EXISTS( SELECT * FROM sys.tables WHERE name = @TableNameNext )
begin
	exec sp_executesql @Sql
end
else
begin
	print '表格不存在'
end

--TEST11212
--TEST11301
--select * from TEST11212

我要發表回答

立即登入回答