易截截图软件、单文件、免安装、纯绿色、仅160KB

SSRS中, 如何将Multi Value传递到SQL的in clause中.

SSRS中, 可以创建个可多选的参数, 该参数可以作为查询项传递给SQL语句.
我遇到的问题是这样的.
1. 我创建了一个可以多选的参数.
2. 将该参数传递到了SQL的一条Select中.
3. select中是这样写的"select * from table where column in (@CoverageID)"
问题就是, SSRS上面的Report只要该值为单一的时候有效, 只要和复选,就没有用了.
比如说,有值1,2,3,4,5在列表中, 如果选择2个以上, SQL就执行不出正确的结果.
看了一下, 原来问题出在参数项上.
如果选择一个值的话@CoverageID的值就是 '1' 这样的话 查询语句为 select * from table where column in ('1') 这样结果是正确的.
如果选择二个或者2个以上的值@CoverageID的值就变成了'1,2,3,4',等多个以逗号为分隔的字符串,
查询就是select * from table where column in ('1,2,3,4') 语法是正确的, 但是肯定不是我们想要的查询结果.
真正的查询是select * from table where column in('1','2','3','4')
既然找到问题了, 解决就只是时间的问题.
这里利用一个现成的功能, 将以指定字符串, 用指定的分隔符分开, 存于一个只有一列的table变量中.
CREATE   function   [dbo].[f_split](@c   varchar(2000),@split   varchar(2))  
  returns   @t   table(col   varchar(20))  
  as  
    begin  
   
      while(charindex(@split,@c)<>0)  
        begin  
          insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))  
          set   @c   =   stuff(@c,1,charindex(@split,@c),'')  
        end  
      insert   @t(col)   values   (@c)  
      return  
    end  
GO
当函数创建好之后,
上面的查询可以稍改一下, 改为 select * from table where column in (select * from dbo.f_s


相关文档:

sql 知识

 select datediff(month,'2009-11-02','2009-12-01')
不知道你要怎么个月差异
上面的命令结果也是1
但是其实按照常识差异不是一个月,是差一天一个月
这有段现成的代码可以帮助你算出常识上的差异
SQL code
declare @t table(a datetime,b datetime);
insert @t
select '2009-11-02','2009-12-01' UNION ......

sql server2005 jdbc解决自动增长列统一处理问题

背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式
问题1:insert select方案
sqlserver2000能够使用insertSql SELECT @@IDENTITY AS 'Identity'的方式来获得,但是mysql则只能使用executeUpdate(insertSql);
executeQuery('SELECT last_insert_id() ')这样的方式,否则会抛出异常:java.sql.SQ ......

SQL聚集索引和非聚集索引


微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)……
  (一)深入浅出理解索引结构
  实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称 ......

SQL数据库设计技巧浅谈

数据库设计经验谈
 
一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有 ......

sql常用语句速查手册

 一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号