209

私がやろうとしているのは、同じ列に複数の CASE WHEN 条件を使用することです。

クエリのコードは次のとおりです。

   SELECT   Url='',
            p.ArtNo,
            p.[Description],
            p.Specification,
            CASE 
            WHEN 1 = 1 or 1 = 1 
               THEN 1 
               ELSE 0 
            END as Qty,
            p.NetPrice,
            [Status] = 0
      FROM  Product p (NOLOCK)

ただし、私がやりたいのは、同じ列「qty」に複数の WHEN を使用することです。

次のコードのように:

IF
// CODE
ELSE IF
// CODE
ELSE IF
// CODE
ELSE
// CODE
4

10 に答える 10

480

case 式には2 つの形式があります。CASE次のように多くのことができますWHEN

CASE  WHEN Col1 = 1 OR Col3 = 1  THEN 1 
      WHEN Col1 = 2 THEN 2
      ...
      ELSE 0 END as Qty

または簡単なCASE

CASE Col1 WHEN 1 THEN 11 WHEN 2 THEN 21 ELSE 13 END

またはとして CASE CASE;

CASE  WHEN Col1 < 2 THEN  
                    CASE Col2 WHEN 'X' THEN 10 ELSE 11 END
      WHEN Col1 = 2 THEN 2
      ...
      ELSE 0 END as Qty
于 2013-01-31T16:58:32.533 に答える
17

これを使うだけで、クラスの場合はもっと使わなければなりません。

SELECT   Url='',
         p.ArtNo,
         p.[Description],
         p.Specification,
         CASE 
         WHEN 1 = 1 or 1 = 1 
            THEN 1 
         WHEN 2 = 2
             THEN 2
         WHEN 3 = 3
              THEN 3
          ELSE 0 
        END as Qty,
        p.NetPrice,
        [Status] = 0
  FROM  Product p (NOLOCK)
于 2013-01-31T16:57:39.833 に答える
7

複数の条件がある場合、以下のケースの例を使用できます。

SELECT
  id,stud_name,
  CASE
    WHEN marks <= 40 THEN 'Bad'
    WHEN (marks >= 40 AND
      marks <= 100) THEN 'good'
    ELSE 'best'
  END AS Grade
FROM Result
于 2018-03-23T12:25:09.327 に答える
2
case 
    when a.REASONID in ('02','03','04','05','06') then
        case b.CALSOC 
            when '1' then 'yes' 
            when '2' then 'no' 
            else 'no' 
        end
    else 'no' 
end 
于 2015-03-17T13:36:04.190 に答える
1
    case when first_condition
      then first_condition_result_true
    else
      case when second_condition 
        then second_condition_result_true
      else
          second_condition_result_false                              
      end
    end
  end as qty
于 2013-01-31T16:57:40.210 に答える
0

私は似ていましたが、日付を扱っていました。先月のすべてのアイテムを表示するクエリは、1 月まで無条件でうまく機能します。正しく機能させるには、年と月の変数を追加する必要がありました

declare @yr int
declare @mth int

set @yr=(select case when month(getdate())=1 then YEAR(getdate())-1 else YEAR(getdate())end)
set @mth=(select case when month(getdate())=1 then month(getdate())+11 else month(getdate())end)

ここで、変数を条件に追加するだけです: ...

(year(CreationTime)=@yr and MONTH(creationtime)=@mth)
于 2014-01-09T14:37:07.470 に答える