SQL CASE WHEN Параметр не пуст - PullRequest
       11

SQL CASE WHEN Параметр не пуст

0 голосов
/ 11 октября 2018

У меня есть следующая таблица:

-------------------------------------
groupid      value                   
-------------------------------------
A            10
A            15
B            20
C            50

Тогда у меня есть один parameter, называемый @groupid.
Если параметр равен A, то результат должен выбрать всезаписей.Но если параметр не A, то результат должен видеть только выбранный параметр.

Пример. Если parameter равно B, то результат должен быть:

-------------------------------------
groupid      value                   
-------------------------------------
B            20

Пример. Если parameter равно A, результат долженбыть:

-------------------------------------
groupid      value                   
-------------------------------------
A            10
A            15
B            20
C            50

Есть идеи?
Спасибо.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Кажется, вам нужна логика:

SELECT *
FROM yourTable
WHERE @groupid = 'A' OR groupid = @groupid;

Если входное значение равно 'A', то все записи совпадают, в противном случае входное значение возвращает только те записи, чьи значения groupid соответствуют.

0 голосов
/ 11 октября 2018

Вот мой дубль с таблицей макетов, просто измените @groupid на любой параметр 'A', 'B' or 'C':

declare @table table (groupId varchar(20), value int)
insert into @table
select 'A',            10 union all
select 'A',            15 union all
select 'B',            20 union all
select 'C',            50

declare @groupid varchar(2)='B'



    SELECT *
    FROM @table
    WHERE  
        'A'= @groupid 
        OR 
        groupid = @groupid;
0 голосов
/ 11 октября 2018

Это очень противоречит интуиции, и я настоятельно рекомендую против этого.Тем не менее, вы можете использовать что-то вроде:

select groupid,value
from   tablename
where  @groupid = 'A'
    OR (@groupid <> 'A' AND @groupid = groupid)

Менее запутанный метод будет:

select groupid,value
from   tablename
where  @groupid IS NULL
    OR @groupid = groupid
...