同じ列に複数の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
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
as;
CASE WHEN Col1 < 2 THEN
CASE Col2 WHEN 'X' THEN 10 ELSE 11 END
WHEN Col1 = 2 THEN 2
...
ELSE 0 END as Qty
これを使うだけで、あなたはそれらがクラスであるときもっと使用しなければなりません。
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)
複数の条件がある場合は、以下のケース例を使用できます。
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
これは、単一のステートメントに対してさまざまなテストを実行するための効率的な方法です。
select
case colour_txt
when 'red' then 5
when 'green' then 4
when 'orange' then 3
else 0
end as Pass_Flag
これは等価比較でのみ機能します。
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
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
すべての条件を組み合わせる
select a.* from tbl_Company a
where a.Company_ID NOT IN (1,2)
AND (
(0 =
CASE WHEN (@Fromdate = '' or @Todate='')
THEN 0
ELSE 1
END
) -- if 0=0 true , if 0=1 fails (filter only when the fromdate and todate is present)
OR
(a.Created_Date between @Fromdate and @Todate )
)
私は似ていたがそれは日付を扱っていました。先月のすべてのアイテムを表示するクエリは、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)