標題

[SQL ] 請位欄位可以是變數嗎

看板DatabaseDB板作者tsongs (......)
時間. (2022-02-24 15:37:42)
推文6則 (1推 0噓 5→)
資料庫名稱:MS SQL

  資料庫版本:2008R2

內容/問題描述:

  有一個table
  部門 分類  年度  01  02  03
  A    銷售  2021 250 300 250
  A    折讓  2021  10   5   0

  欄位01 02 03是各月份

  select 01 FROM table where ...
  這01能用變數取代嗎

  declare @i int  轉換成2位補0 varchar(2)
  select quotename(@i) from table
  出來是[01]
  失敗

  我很多利用寄送的html報表要用到
  現在是寫12次

  其他嘗試還有
  1.試用 sp_executesql
    比寫12次複雜不少 ,寫一半放棄
  2.轉成table (月,值)
    稍微簡單一點,若沒有其他方法就用此方法

 以下是要輸出HTML格式 為了顯示 1,234 要寫很長一串
 來問有無簡單點的寫法

 SET @Html = @Html + N'<td>' +
 (SELECT Isnull(nullif(
 convert(varchar(10),Left(convert(varchar(20),convert(money,[01
 ]),1),len(convert(varchar(20),convert(money,[01]),1))-3) ),'0') ,'')
 FROM #tmp WHERE rid = @i) + N'</td>';
--
※ 發信站: 批踢踢實業坊(pttweb.tw), 來自: 125.227.65.181 (臺灣)
※ 文章網址: https://pttweb.tw/Database/M.1645688264.A.3C5
#1
: 為啥不撈出來用程式轉成報表....02/24 19:32

  因為這是利用stored procedure 半夜自動發信
  這功能非常好用,user定期收到他需要的
  除outlook的html不太好寫外

  同樣的報表UI也會有
  那邊就不用管這些,直接顯示

  其實我轉成table重寫完了
  簡單不少
  只是這功能我查很久查不到
  想上來問問
※ 編輯: tsongs (125.227.65.181 臺灣), 02/25/2022 12:05:28
#2
: SET @sql = 'select' [email protected]+ 'FROM table where ...';02/25 16:34
#3          記得要 into 到 temp table02/25 16:37
#4          然後 EXEC (@sql) 再 select temp table 就有你要的02/25 16:37
#5
: 做動態 SQL 指令的話要小心 SQL injection 攻擊哦02/27 16:32
#6
: 欄位可以是變數,關鍵字computed column03/12 11:28

相關文章


Database熱門文章