求助

MICKYONLY 2012-02-24 03:20:47
DECLARE @str varchar(1000) DECLARE @i int
SET @i = DAY
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()), 102)))
SET @str = (CASE WHEN @i = 1 THEN 'd_1' WHEN @i = 2 THEN 'd_2' WHEN @i = 3 THEN 'd_3'
WHEN @i = 4 THEN 'd_4' WHEN @i = 5 THEN 'd_5' WHEN @i = 6 THEN 'd_6' WHEN @i
= 7 THEN 'd_7' WHEN @i = 8 THEN 'd_8' WHEN @i = 9 THEN 'd_9' WHEN @i = 10 THEN
'd_10' WHEN @i = 11 THEN 'd_11' WHEN @i = 12 THEN 'd_12' WHEN @i = 13 THEN 'd_13'
WHEN @i = 14 THEN 'd_14' WHEN @i = 15 THEN 'd_15' WHEN @i = 16 THEN 'd_16' WHEN
@i = 17 THEN 'd_17' WHEN @i = 18 THEN 'd_18' WHEN @i = 19 THEN 'd_19' WHEN @i
= 20 THEN 'd_20' WHEN @i = 21 THEN 'd_21' WHEN @i = 22 THEN 'd_22' WHEN @i =
23 THEN 'd_23' WHEN @i = 24 THEN 'd_24' WHEN @i = 25 THEN 'd_25' WHEN @i = 26
THEN 'd_26' WHEN @i = 27 THEN 'd_27' WHEN @i = 28 THEN 'd_28' WHEN @i = 29 THEN
'd_29' WHEN @i = 30 THEN 'd_30' WHEN @i = 31 THEN 'd_31' END)
SET @str = 'update rytj_record set ' + @str + ' = rytj.target_ry FROM rytj_record,
(SELECT depts.deptid, users.userid, YEAR
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS year_ry, MONTH
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS month_ry, DAY
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS day_ry, (CASE WHEN tj_time IS NULL
THEN NULL ELSE 1 END) AS target_ry
FROM users INNER JOIN
depts ON users.deptid = depts.deptid LEFT OUTER JOIN
jb_record ON users.userid = jb_record.userid AND year(tj_time)
= YEAR
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AND month(tj_time) = MONTH
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AND day(tj_time) = DAY
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102)))
WHERE (depts.deptid = 6) OR
(depts.deptid = 20) OR
(depts.deptid = 21) OR
(depts.deptid = 22) OR
(depts.deptid = 23) OR
(depts.deptid = 24) OR
(depts.deptid = 30) OR
(depts.deptid = 31) OR
(depts.deptid = 32) OR
(depts.deptid = 33) OR
(depts.deptid = 40) OR
(depts.deptid = 41) OR
(depts.deptid = 42) OR
(depts.deptid = 11)) AS rytj
WHERE rytj_record.userid = rytj.userid AND
rytj_record.year_ry = rytj.year_ry AND
rytj_record.month_ry = rytj.month_ry'
EXEC (@str)
这句话影响行数始终是1,不知道哪里写得不对。我去掉参数,即把@str换成d_23执行结果却是正确,求助啊
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MICKYONLY 2012-02-24
  • 打赏
  • 举报
回复
重新复制了一下,也看不出哪里错了,谢谢各位大侠
MICKYONLY 2012-02-24
  • 打赏
  • 举报
回复
update rytj_record set d_23 = rytj.target_ry FROM rytj_record,
(SELECT depts.deptid, users.userid, YEAR
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS year_ry, MONTH
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS month_ry, DAY
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AS day_ry, (CASE WHEN tj_time IS NULL
THEN NULL ELSE 1 END) AS target_ry
FROM users INNER JOIN
depts ON users.deptid = depts.deptid LEFT OUTER JOIN
jb_record ON users.userid = jb_record.userid AND year(tj_time)
= YEAR
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AND month(tj_time) = MONTH
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102))) AND day(tj_time) = DAY
((SELECT CONVERT(varchar(100), dateadd(day, - 1, getdate()),
102)))
WHERE (depts.deptid = 6) OR
(depts.deptid = 20) OR
(depts.deptid = 21) OR
(depts.deptid = 22) OR
(depts.deptid = 23) OR
(depts.deptid = 24) OR
(depts.deptid = 30) OR
(depts.deptid = 31) OR
(depts.deptid = 32) OR
(depts.deptid = 33) OR
(depts.deptid = 40) OR
(depts.depti
服务器: 消息 170,级别 15,状态 1,行 31
第 31 行: 'depti' 附近有语法错误。

这也没错啊
Rotel-刘志东 2012-02-24
  • 打赏
  • 举报
回复
先打印出看一看了print(@str)
然后再执行动态sql
exec(@str)
dawugui 2012-02-24
  • 打赏
  • 举报
回复
print (@str)


EXEC (@str)
MICKYONLY 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acherat 的回复:]
按 CTRL+T 然后执行看看,你是以网格形式输出结果集的,CTRL+D 网格形式 CTRL+T 文本形式
[/Quote]
还是什么反应都没有
AcHerat 元老 2012-02-24
  • 打赏
  • 举报
回复
按 CTRL+T 然后执行看看,你是以网格形式输出结果集的,CTRL+D 网格形式 CTRL+T 文本形式
MICKYONLY 2012-02-24
  • 打赏
  • 举报
回复
急求助啊
MICKYONLY 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]
EXEC (@str)前边加个 pring @str 看看执行的SQL语句哪里有问题。
[/Quote]
这个print怎么应用啊,我加了都没有输出的东西
AcHerat 元老 2012-02-24
  • 打赏
  • 举报
回复
exec执行后的结果是否正确。
AcHerat 元老 2012-02-24
  • 打赏
  • 举报
回复
EXEC (@str)前边加个 pring @str 看看执行的SQL语句哪里有问题。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧