Sql server SQL where子句中的布尔条件

Sql server SQL where子句中的布尔条件,sql-server,booleanquery,Sql Server,Booleanquery,我想编写一个sql查询来获取数据,如下所示: 1. when param = 'all' it should list data across the table 2. when param = 'yes' it should list data where invoicenumber is not empty. 3. when param = 'no' it should list data where invoicenumber is empty. 我试着在下面询问是和否 declare

我想编写一个sql查询来获取数据,如下所示:

1. when param = 'all' it should list data across the table
2. when param = 'yes' it should list data where invoicenumber is not empty.
3. when param = 'no' it should list data where invoicenumber is empty.
我试着在下面询问是和否

declare @invoiced as nvarchar(10) = 'no'
select * from OrderSummary 
    where 
((@invoiced = 'yes') or (InvoiceNumber = ''))
    and
((@invoiced = 'no') or (InvoiceNumber <> ''))
declare@发票为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
((@invoinced='yes')或(InvoiceNumber='')
和
((@invoinced='no')或(InvoiceNumber'))
现在我还想合并所有条件,有谁能建议我如何实现将@invocated声明为nvarchar(10)=“否”
declare @invoiced as nvarchar(10) = 'no'
select * from OrderSummary 
    where 
    @invoiced = 'all'
    OR 
    (@invoiced = 'yes' AND InvoiceNumber <> '')
    OR 
    (@invoiced = 'no' AND InvoiceNumber = '')
从OrderSummary中选择* 哪里 @发票='全部' 或 (@invoinced='yes'和InvoiceNumber') 或 (@invoinced='no'和InvoiceNumber='')
声明@invocated为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
@发票='全部'
或
(@invoinced='yes'和InvoiceNumber')
或
(@invoinced='no'和InvoiceNumber='')
试试这个

declare @invoiced as nvarchar(10) = 'no'
select 
  * 
  from OrderSummary 
  where 
  (
     @invoiced = 'all'
     OR
     (
        @invoiced = 'yes'
        AND
        InvoiceNumber <> ''
     )
     OR
     (
        @invoiced = 'no'
        AND
        InvoiceNumber = ''
     )
  )
declare@发票为nvarchar(10)=“否”
挑选
* 
来自订单摘要
哪里
(
@发票='全部'
或
(
@发票='是'
及
发票号码“”
)
或
(
@发票='否'
及
发票号码=“”
)
)
试试这个

declare @invoiced as nvarchar(10) = 'no'
select 
  * 
  from OrderSummary 
  where 
  (
     @invoiced = 'all'
     OR
     (
        @invoiced = 'yes'
        AND
        InvoiceNumber <> ''
     )
     OR
     (
        @invoiced = 'no'
        AND
        InvoiceNumber = ''
     )
  )
declare@发票为nvarchar(10)=“否”
挑选
* 
来自订单摘要
哪里
(
@发票='全部'
或
(
@发票='是'
及
发票号码“”
)
或
(
@发票='否'
及
发票号码=“”
)
)
声明@invocated为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
((@invoinced='yes')和(InvoiceNumber'))
或
((@invoiced='no')和((InvoiceNumber='')或(InvoiceNumber=null)))
或(@invoited='all')
请使用上述查询更新此查询。

将@invoited声明为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
((@invoinced='yes')和(InvoiceNumber'))
或
((@invoiced='no')和((InvoiceNumber='')或(InvoiceNumber=null)))
或(@invoited='all')

请使用上述查询更新此查询。

它应该满足您的要求

declare @invoiced as nvarchar(10) = 'no'

select * from OrderSummary 
    where
((@invoiced in ('all','no')) OR (@invoiced = 'yes' AND InvoiceNumber  <> ''))
    and
((@invoiced in ('all','yes')) OR (@invoiced = 'no' AND InvoiceNumber  = ''))
    and
(@invoiced in ('no','yes'))
declare@发票为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
(@invoited in('all','no')或(@invoited='yes'和InvoiceNumber'))
和
(@invoited in('all','yes')或(@invoited='no'和InvoiceNumber='')
和
(@发票金额('否','是'))

它应该满足您的要求

declare @invoiced as nvarchar(10) = 'no'

select * from OrderSummary 
    where
((@invoiced in ('all','no')) OR (@invoiced = 'yes' AND InvoiceNumber  <> ''))
    and
((@invoiced in ('all','yes')) OR (@invoiced = 'no' AND InvoiceNumber  = ''))
    and
(@invoiced in ('no','yes'))
declare@发票为nvarchar(10)=“否”
从OrderSummary中选择*
哪里
(@invoited in('all','no')或(@invoited='yes'和InvoiceNumber'))
和
(@invoited in('all','yes')或(@invoited='no'和InvoiceNumber='')
和
(@发票金额('否','是'))