作者tsongs (......)
看板Database
标题[SQL ] 请位栏位可以是变数吗
时间Thu Feb 24 15:37:42 2022
资料库名称: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>';
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.65.181 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1645688264.A.3C5.html
1F:→ MOONY135: 为啥不捞出来用程式转成报表.... 02/24 19:32
因为这是利用stored procedure 半夜自动发信
这功能非常好用,user定期收到他需要的
除outlook的html不太好写外
同样的报表UI也会有
那边就不用管这些,直接显示
其实我转成table重写完了
简单不少
只是这功能我查很久查不到
想上来问问
※ 编辑: tsongs (125.227.65.181 台湾), 02/25/2022 12:05:28
2F:→ retsamsu: SET @sql = 'select' +@i+ 'FROM table where ...'; 02/25 16:34
3F:→ retsamsu: 记得要 into 到 temp table 02/25 16:37
4F:→ retsamsu: 然後 EXEC (@sql) 再 select temp table 就有你要的 02/25 16:37
5F:推 ken218: 做动态 SQL 指令的话要小心 SQL injection 攻击哦 02/27 16:32
6F:→ kerokwxwen: 栏位可以是变数,关键字computed column 03/12 11:28