在已有的存储查询语句里增加一个条件问题

BarryW 2007-07-06 03:43:51
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when trs_dd='''+convert(char(10),trs_dd,120)+''' then qty else 0 end) as ['+convert(char(10),trs_dd,120)+']'
from TF_JBTZ where (trs_dd>='2007-04-01' and trs_dd<='2007-05-01') group by trs_dd
select @sql='select yg_no as 员工代号,姓名=(select [name]
from mf_yg where mf_yg.yg_no=tf_jbtz.yg_no),部门名称=(select dept.name
from mf_yg,dept where tf_jbtz.yg_no=mf_yg.yg_no and mf_yg.dep=dept.dep ),
离职日期=(select out_day from mf_yg where mf_yg.yg_no=tf_jbtz.yg_no ) '+@sql+' from TF_JBTZ group by yg_no'
exec (@sql)


请问在上面的存储查询条件里想加一个条件:
显示内容为MF_YG.OUT_DAY大于查询条件里的TF_JBTZ.trs_dd(from TF_JBTZ where (trs_dd>='2007-04-01')日期,
应何如可以做到呢?
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jefftong 2007-10-06
  • 打赏
  • 举报
回复
你有sunlike erp源代码,QQ是多少呀,有QQ交流
paoluo 2007-07-06
  • 打赏
  • 举报
回复
再改下


declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when trs_dd='''+convert(char(10),trs_dd,120)+''' then qty else 0 end) as ['+convert(char(10),trs_dd,120)+']'
from TF_JBTZ where (trs_dd>='2007-04-01' and trs_dd<='2007-05-01') group by trs_dd
select @sql='select A.yg_no as 员工代号,姓名=B.[name], 部门名称= C.name'+@sql+' from TF_JBTZ A
Left Join mf_yg B On A.yg_no = B.yg_no
Left Join dept C On B.dep = C.dep
Where (A.trs_dd Between ''2007-04-01'' and ''2007-05-01'')
And B.OUT_DAY > A.trs_dd
group by A.yg_no, B.name, C.name'
exec (@sql)
paoluo 2007-07-06
  • 打赏
  • 举报
回复
不好意思,真是粗心

修改下

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when trs_dd='''+convert(char(10),trs_dd,120)+''' then qty else 0 end) as ['+convert(char(10),trs_dd,120)+']'
from TF_JBTZ where (trs_dd>='2007-04-01' and trs_dd<='2007-05-01') group by trs_dd
select @sql='select A.yg_no as 员工代号,姓名=B.[name], 部门名称= C.name'+@sql+' from TF_JBTZ A
Left Join mf_yg B On A.yg_no = B.yg_no
Left Join dept C On A.dep = C.dep
Where (A.trs_dd Between ''2007-04-01'' and ''2007-05-01'')
And B.OUT_DAY > A.trs_dd
group by A.yg_no, B.name, C.name'
exec (@sql)
BarryW 2007-07-06
  • 打赏
  • 举报
回复
paoluo(一天到晚游泳的鱼) ( )

上面的条件通不过
提示:
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'Where'.

mengmou()mengmou() ( )
是啊,你有回答过我提的问题。
mengmou 2007-07-06
  • 打赏
  • 举报
回复
楼主挺面熟
paoluo 2007-07-06
  • 打赏
  • 举报
回复
子查詢改為用關聯來做,效率更優。

另外,你外面的條件“(trs_dd>='2007-04-01' and trs_dd<='2007-05-01') ”也可以加到動態語句裡面去。
paoluo 2007-07-06
  • 打赏
  • 举报
回复
try

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when trs_dd='''+convert(char(10),trs_dd,120)+''' then qty else 0 end) as ['+convert(char(10),trs_dd,120)+']'
from TF_JBTZ where (trs_dd>='2007-04-01' and trs_dd<='2007-05-01') group by trs_dd
select @sql='select A.yg_no as 员工代号,姓名=B.[name], 部门名称= C.name'+@sql+' from TF_JBTZ A
Left Join mf_yg B On A.yg_no = B.yg_no
Left Join dept C On A.dep = C.dep group by A.yg_no, B.name, C.name
Where (A.trs_dd Between ''2007-04-01'' and ''2007-05-01'')
And B.OUT_DAY > A.trs_dd '
exec (@sql)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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