我正在测试一些可以接收多个值的 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/