【问题标题】:How can we use case in Select Statement?我们如何在 Select 语句中使用 case?
【发布时间】:2019-04-17 09:48:01
【问题描述】:

有什么方法可以在 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


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      听起来像你追求的是什么:

      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;
      

      【讨论】:

        【解决方案3】:
        select
        case when @NameType = 'First' then FirstName
             when @NameType = 'Second' then SecondName end ColName,
        RollNumber, Subject, Marks From Student
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          相关资源
          最近更新 更多