我们如何在Select Statement中使用案例?

问题描述 投票:0回答:3

有没有办法在SQL中有条件地打印列?让我们说Select FirstName, LastName, RollNumber, Subject, Marks From Student给出了5柱FirstName, LastName, RollNumber, Subject, Marks的输出。它也接受一个参数@NameType。如果@NameType = 'First'然后输出应该只有FirstName, RollNumber, Subject, Marks。同样,如果@NameType = 'Second'然后输出应该只有SecondName, RollNumber, Subject, Marks排除列FirstName。如何实现这一目标?

Declare @NameType nvarchar(max);

Set @NameType='First'

Select FirstName, LastName, RollNumber, Subject, Marks From Student
sql sql-server database case
3个回答
1
投票
DECLARE @NameType VARCHAR(10)
SET @NameType = 'First';

SELECT CASE WHEN @NameType = 'First' THEN FirstName
            WHEN @NameType = 'Second' THEN LastName END as [Name]
,RollNumber
,Subject
,Marks
FROM Student;

0
投票

听起来像你的追随者:

DECLARE @NameType varchar(6); --no reason to be a `MAX`, Second is only 6 characters long,
                              --and it doesn't need to be an nvarchar, as neither string contains unicode characters
SET @NameType = 'First';
SELECT CASE @NameType WHEN 'First' THEN FirstName
                      WHEN 'Second' THEN LastName
       END AS [Name],
       RollNumber,
       Subject,
       Marks
FROM Student;

0
投票
select
case when @NameType = 'First' then FirstName
     when @NameType = 'Second' then SecondName end ColName,
RollNumber, Subject, Marks From Student
© www.soinside.com 2019 - 2024. All rights reserved.