gpt4 book ai didi

sql - 在sql中使用case语句获取多行作为输出

转载 作者:行者123 更新时间:2023-12-04 08:41:03 26 4
gpt4 key购买 nike

我有一张 table ,

id category column1 column2 column3
1 1 val1a val1b val1c
2 2 val2a val2b val2c
3 3 val3a val3b val3c

我需要从中选择基于多个条件的列,如下所示。
SELECT id, category, column1, column2, column3
FROM table
WHERE id = @id
AND category IN (
select case when (@input1='Yes' AND @input2='Yes') then (select category from table where category in ('1','2'))
when (@input1='Yes' AND @input2='No') then (select category from table where category ='1')
when (@input1='No' AND @input2='Yes') then (select category from table where category ='2')
else ''
end as category)
END

输入值@input1和@input2是从另一个表中抓取的,需要根据上述条件选择和输出类别在('1','2')中的行。
我需要的 -
如果 input1=Yes 并且 input2=Yes 输出类别为 ('1','2') 的行
如果 input1=Yes 并且 input2=No 输出类别为 ('1') 的行
如果 input1=No 并且 input2=Yes 输出类别为 ('2') 的行
如果 input1=No 和 input2=No 输出类别为 ('') 的行
case 语句是否输出多个值?需要帮忙。

最佳答案

查看下面的代码,您不需要使用 CASE WHEN,只需使用 where 条件组合即可。

create table [Test] ( id int, category nvarchar(10));

insert [Test] values(1,'1');
insert [Test] values(2,'2');
insert [Test] values(3,'1');
insert [Test] values(4,'2');


declare @input1 varchar(10) = 'Yes'
declare @input2 varchar(10) = 'No'

SELECT id, category
FROM [Test]
WHERE
(
( @input1 = 'Yes' and category ='1')
or
( @input2 = 'Yes' and category ='2')
)

关于sql - 在sql中使用case语句获取多行作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64569244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com