sql - 测试时我想在变量中插入多个值

标签 sql sql-server reporting-services

我正在测试一些可以接收多个值的 SQL 代码,然后使用“IN”语句对它们进行比较。我如何模拟这个进行测试。这是我正在使用的,但它没有返回任何内容,这是不正确的,因为当我在 SSRS 报告中发送多个值时,它可以工作。我希望 @item 模拟运行报告时从 SSRS 获取的内容。

Declare
@item VarChar(100)

Set @item = ('1003932,1003933,1003934')




SELECT DISTINCT
    CUSTNAME,
    ISNULL(NAME, LOGCREATEDBY) AS 'Modified By'
    ,b.ITEMID as 'Item Id'
    ,[PRICE_NEW] as 'New Price'
    ,[PRICE_OLD] as 'Old Price'
    ,[PRICEUNIT_NEW] as 'New Unit Price'
    ,[PRICEUNIT_OLD] as 'Old Unit Price'
    ,LOGCREATEDDATE as 'Created Date' 
    ,(Select TOP 1 INVENTTRANS.DATEFINANCIAL From INVENTTRANS Where INVENTTRANS.ITEMID = @item order by INVENTTRANS.DATEFINANCIAL desc) As 'LastInvoice'
FROM PMF_INVENTTABLEMODULELOG AS b
    LEFT JOIN USERINFO ON ID = LOGCREATEDBY
    LEFT JOIN INVENTTABLE AS a on a.ITEMID in (@item)
WHERE b.ITEMID in (@item)
order by LOGCREATEDDATE  desc

最佳答案

不能这样。

我建议您将值插入表变量中,

declare @items_table table (id int);
insert @items_table values ('1003932'),('1003933'),('1003934');

然后将where子句更改为

WHERE b.ITEMID in (SELECT id FROM @items_table)

或者您可以简单地修改 where 子句:

WHERE b.ITEMID in ('1003932','1003933','1003934')

关于sql - 测试时我想在变量中插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867648/

相关文章:

sql - 如何使用 SQL Server 的 OUTPUT 子句进行更新

sql - 在 SQL Server 中组织表以删除 NULL 值并从同一级别开始

sql - 如何避免此查询中出现相同的输出时间?

c# - LocalReport 方法呈现的线程文化

winforms - WinForms 的 ReportViewer (.rdlc) 灯光设计器

reporting-services - ConnectionString 属性尚未初始化。 SSRS

python - SQLAlchemy 子字符串在字符串中

mysql - 查找所有员工的姓名以及每个项目 ID 的工作时间

c# - Microsoft.SqlServer.Management.Smo 获取 SQL Server 的恢复模型

sql-server - SQL Server Management Studio 2016 → 事件监视器 → 显示执行计划