您的位置:首页 > 其它

存储过程分割字符串查询

2014-05-30 14:10 369 查看
create proc [dbo].[Proc_RS_VRDPAC_MRC1_SelectPassCountByYearMonthtest]
@month varchar(100)
as
declare @m as int, @sql as nvarchar(1000),@n as int ,@id as nvarchar(100),@id1 as nvarchar(100),@num as int
set @m = CHARINDEX (',',@month)
set @n = 0
set @num=0
set @sql='select month(dbo.fn_PrimeObjects_GetLocalTime(a.ExamingOn)) as months,b.BU,
sum(CONVERT(decimal(18, 0), a.IsPassed)) as pasman,
count(distinct a.stuid) -sum(CONVERT(decimal(18, 0), a.IsPassed)) as nopas
from VK_RDPAC_MRC1_Record as a
join Employee as b
on a.stuid=b.FID
where BU is not null and bu is not null and b.ProduceLine is not null'
WHILE @m>0
BEGIN
set @id=substring(@month,@n,@m-@n)
set @n=@m+1
set @m=CHARINDEX(',',@month,@n)
print @m
if @num=0
begin
if @m=0
begin
set @sql=@sql+' and CONVERT(varchar(7),a.ExamingOn,120) in ('''+@id+''')'
end
else
begin
set @sql=@sql+' and (CONVERT(varchar(7),a.ExamingOn,120) in ('''+@id+''')'
end
end
else
begin
if @m=0
begin
set @sql=@sql+' or CONVERT(varchar(7),a.ExamingOn,120) in ('''+@id+'''))'
end
else
begin
set @sql=@sql+' or (CONVERT(varchar(7),a.ExamingOn,120) in ('''+@id+''')'
end
end
set @num=@num+1
END
set @sql=@sql+' group by month(dbo.fn_PrimeObjects_GetLocalTime(a.ExamingOn)),b.BU order by b.BU'
exec sp_executesql @sql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: