大力,求救

anxiong 2003-08-22 08:38:20
declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
if @@RowCount=0
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into #sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)
else
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into #sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)

因为下面还有代码,需要对这个临时表进行处理.所以要求要同名.简化的方式
...全文
16 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
anxiong 2003-08-22
  • 打赏
  • 举报
回复
谢了,我更希望,如果有开关可以解决这个问题,就好.不过,也跟你学了一点.祝你快乐
nboys 2003-08-22
  • 打赏
  • 举报
回复
declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
if @@RowCount=0
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into ##sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)')
else
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into ##sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>'+@H1+')') --忘了看这个是变量,这边修改一下
.....................
anxiong 2003-08-22
  • 打赏
  • 举报
回复
估计原因,在于无法引用@H1变量
anxiong 2003-08-22
  • 打赏
  • 举报
回复
兄台的方法,执行之后,通不过
nboys 2003-08-22
  • 打赏
  • 举报
回复
修改一下:
把临时表改为全局临时表,否则下面的操作不认的该局部临时表


declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
if @@RowCount=0
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into ##sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)')
else
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into ##sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)')

....................
nboys 2003-08-22
  • 打赏
  • 举报
回复
or

declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
if @@RowCount=0
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into #sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)')
else
exec('Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
into #sH000
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)')

....................
anxiong 2003-08-22
  • 打赏
  • 举报
回复
因为,小弟,我猜测,SQL使用临时表,只在内存中进行.
anxiong 2003-08-22
  • 打赏
  • 举报
回复
大哥的方法有点道理,但不是,让人很满意
nboys 2003-08-22
  • 打赏
  • 举报
回复
declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
create table #sH000 (
vH001 varchar(100), --部门
vH002 varchar(100), --岗位
vH003 datetime, --需要的日期
vH005 int, --需求前的已有人数
vH006 int --需求的人数)
)
if @@RowCount=0
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)
else
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)

...............

drop table #sH000
nboys 2003-08-22
  • 打赏
  • 举报
回复
declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
create table #sH000 (vH001 varchar(100), --部门
vH002 varchar(100), --岗位
vH003 varchar(100), --需要的日期
vH005 varchar(100), --需求前的已有人数
vH006 varchar(100) --需求的人数)
)
if @@RowCount=0
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)
else
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)

...............

drop table #sH000
nboys 2003-08-22
  • 打赏
  • 举报
回复
改为;

declare @H1 datetime
select @H1=H006 from H0015 where H000=(select max(H000) from H0015)
create table #sH000 (vH001 varchar(100), --部门
vH002 varchar(100), --岗位
vH003 varchar(100), --需要的日期
vH005 varchar(100), --需求前的已有人数
vH006 varchar(100) --需求的人数)
)
if @@RowCount=0
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)
else
insert into #sH000
Select a.H004 AS vH001, --部门
b.H002 AS vH002, --岗位
b.H005 AS vH003, --需要的日期
b.H003 AS vH005, --需求前的已有人数
b.H004 AS vH006 --需求的人数
From H0012 a RIGHT OUTER JOIN
H0013 b ON a.H000 = b.H001
Where (a.H007 = 1)and(a.H006>@H1)
anxiong 2003-08-22
  • 打赏
  • 举报
回复
问题就在and(a.H006>@H1)这里

34,575

社区成员

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

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