iT邦幫忙

2

MS SQL 查詢時,欄位名稱要改變(批量)

  • 分享至 

  • xImage

在MS SQL
原寫法
SELECT TC001 AS DAY001,
TC002 AS DAY002,
.
.
.
.
TC099 AS DAY099
FROM TC_LIST

請問 各位高手,有更簡便的寫法嗎?

看更多先前的討論...收起先前的討論...
daimom iT邦新手 2 級 ‧ 2020-05-26 14:59:54 檢舉
https://ithelp.ithome.com.tw/articles/10011041
keyword: 動態SQL
ckp6250 iT邦好手 1 級 ‧ 2020-05-26 15:00:48 檢舉
當初欄位命名時,為何不直接命名 DAY001,DAY002,DAY003
因為在不同的用途,顯示的欄位名稱會不一樣。
寫VIEW,STORED PROCEDURE
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
PPTaiwan
iT邦好手 1 級 ‧ 2020-05-26 19:35:32

可以用 查詢 table Rows

再用 CURSOR FOR 來組合出語法,就可以有你想要的語法出來...

但...欄位取名 xxx001 ~ xxx00N 用數字做欄位,會被令人討厭..

實務上的考量.
不採用自然語定義,是因為英文非母語,容易出錯.
我們會另建欄位名稱對照表.

0
sam0407
iT邦大師 1 級 ‧ 2020-05-28 08:20:27

1.建一個View是否能解決您的問題?
當然您程式有用到TC_LIST的地方都要改成這個View

2.如果TC_LIST資料不多,更新頻率也不高,可以用SSIS排程每小時將TC_LIST滙出到新Table,在SSIS裡設好欄位對應
一樣您程式有用到TC_LIST的地方都要改成這個新Table

以上兩種方法最大的差別是看您需不需要對TC_LIST的資料作修改,若需要修改就選View,用View您可以把他想成作一個連結,所以您直接對View下Update或Delete會直接更改TC_LIST裡的資料,用SSIS就是複製一份出來,新Table跟TC_LIST是獨立的兩份資料

我要發表回答

立即登入回答