如何使用参数检索记录?

时间:2017-12-01 20:00:36

标签: sql-server

在我的表格中,我有几个docNums系列。

我想有条件地检索所有系列或从集合中排除一个系列。

我尝试了以下返回错误的查询

declare @p char(1) = 1

select 
    t0.docNum  
from   
    OINV t0
where  
    t0.DocNum = case
                   when @p  <> '1' then t0.DocNum                             
                   else (select t1.DocNum
                         from oinv t1
                         where SUBSTRING(convert(varchar, t1.docNum), 1, 1) <> '9' 
                           and LEN(convert(varchar, t1.docNum)) < 7)
                end  

正确的查询应该是什么?

1 个答案:

答案 0 :(得分:1)

非常确定您收到有关返回多行的子查询的错误消息。这是因为您的子查询将返回表中的所有行。您需要将该子查询与外部查询相关联以避免这种情况。但是你根本不需要在这里使用子查询。这可以简化为这样的。

post