打个比方: create proc pr_test @table varchar(10), @where varchar(100) as begin exec('select * from '+@table+' where '+@where) end go
算了,给个例子:DECLARE @SQLSTR NVARCHAR(4000)IF(@DAY > 1)--@day是输入参数 SET @SQLSTR = 'SELECT * FROM A WHERE A.ID > 100 ELSE SET @SQLSTR = 'SELECT * FROM A WHERE A.ID < 100 EXEC @SQLSTR GO搞定!
我试了2位的方法,但是还是有写问题..能按照我上面的样子 改一下么? ------------------------------------------------------ if(@grpname<>'') begin INSERT into #QeryData SELECT io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration, InboundCallTime, left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16) AS DATE_PART FROM calllog WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd and agentgrp=@grpname order by InboundCallTime end if(@grpname='') begin INSERT into #QeryData SELECT io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration, InboundCallTime, left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16) AS DATE_PART FROM calllog WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd order by InboundCallTime end set @currFrom = @currEnd --进入下一阶段 ---------------------------------------------------------------------我是有点理解了,但是还是不知道怎么实现...
打个比方:
create proc pr_test
@table varchar(10),
@where varchar(100)
as
begin
exec('select * from '+@table+' where '+@where)
end
go
SET @SQLSTR = 'SELECT * FROM A WHERE A.ID > 100
ELSE
SET @SQLSTR = 'SELECT * FROM A WHERE A.ID < 100
EXEC @SQLSTR
GO搞定!
------------------------------------------------------
if(@grpname<>'')
begin
INSERT into #QeryData
SELECT io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration,
InboundCallTime,
left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16)
AS DATE_PART
FROM calllog
WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd and agentgrp=@grpname order by InboundCallTime
end
if(@grpname='')
begin
INSERT into #QeryData
SELECT io,agentgrp,AnswerFlag,QueueDuration,WaitTime,StartRingTime,TalkDuration,
InboundCallTime,
left(convert(varchar, @currFrom,120),16)+' - '+ left(convert(varchar, @currEnd,120),16)
AS DATE_PART
FROM calllog
WHERE (io=0) and InboundCallTime>=@currFrom and InboundCallTime<@currEnd order by InboundCallTime
end
set @currFrom = @currEnd --进入下一阶段
---------------------------------------------------------------------我是有点理解了,但是还是不知道怎么实现...