Как мы можем использовать регистр в Select Statement? - PullRequest
0 голосов
/ 17 апреля 2019

Есть ли способ условно напечатать столбец в 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

Ответы [ 3 ]

1 голос
/ 17 апреля 2019
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 голосов
/ 17 апреля 2019
select
case when @NameType = 'First' then FirstName
     when @NameType = 'Second' then SecondName end ColName,
RollNumber, Subject, Marks From Student
0 голосов
/ 17 апреля 2019

Похоже, что ваш после:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...