Yanıtlar:
Bu biçim şunlardan birini kullanmanızı gerektirir:
CASE ebv.db_no
WHEN 22978 THEN 'WECS 9500'
WHEN 23218 THEN 'WECS 9500'
WHEN 23219 THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system
Aksi takdirde şunu kullanın:
CASE
WHEN ebv.db_no IN (22978, 23218, 23219) THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system
=
tek bir değerle karşılaştırırsanız işe yarar. Ancak, (22978, 23218, 23219)
bir dizidir ve IN
değerlerden yalnızca biriyle eşleşmesi gerekir.
CASE
WHEN ebv.db_no = 22978 OR
ebv.db_no = 23218 OR
ebv.db_no = 23219
THEN 'WECS 9500'
ELSE 'WECS 9520'
END as wecs_system
IN
anahtar kelime kullanmak çok daha iyi bir yoldur
NE ZAMAN olan ifadelerden birini kullanabilirsiniz, ancak ikisini birden karıştıramazsınız.
WHEN Instagram Hesabındaki Resim ve Videoları when_expression
Basit CASE formatı kullanıldığında input_expression komutunun karşılaştırıldığı basit bir ifadedir. when_expression herhangi bir geçerli ifadedir. İnput_expression ve her when_expression veri türleri aynı veya örtük bir dönüşüm olmalıdır.
WHEN Boolean_expression
Aranan CASE biçimi kullanılırken Boole ifadesi değerlendirilir mi? Boolean_expression geçerli herhangi bir Boolean ifadesidir.
Programlayabilirsiniz:
1.
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
2.
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
Ancak her durumda, değişken sıralamasının bir boole ifadesinde karşılaştırılmasını bekleyebilirsiniz.
Bkz. CASE (Transact-SQL) (MSDN).
Bununla ilgili zaten birçok cevap var CASE
. Ne zaman ve nasıl kullanılacağını açıklayacağım CASE
.
CASE ifadelerini SQL sorgularının herhangi bir yerinde kullanabilirsiniz. CASE ifadeleri SELECT ifadesi, WHERE yan tümcesi, yan tümce sıralaması, HAVING yan tümcesi, Insert, UPDATE ve DELETE ifadeleri içinde kullanılabilir.
Bir CASE ifadesi aşağıdaki iki biçime sahiptir:
Basit CASE ifadesi
CASE expression
WHEN expression1 THEN Result1
WHEN expression2 THEN Result2
ELSE ResultN
END
Bu, sonucu bulmak için bir ifadeyi bir dizi basit ifadeyle karşılaştırır. Bu ifade, bir ifadeyi eşdeğerlik için her WHEN yan tümcesindeki ifadeyle karşılaştırır. WHEN yan tümcesi içindeki ifade eşleşirse, THEN yan tümcesindeki ifade döndürülür.
OP'nin sorusu bu noktada düşüyor. 22978 OR 23218 OR 23219
ebv.db_no ifadesine eşit bir değer elde etmez. Bu yüzden bir hata veriyor. İnput_expression ve her when_expression veri türleri aynı veya örtük bir dönüşüm olmalıdır.
Aranan CASE ifadeleri
CASE
WHEN Boolean_expression1 THEN Result1
WHEN Boolean_expression2 THEN Result2
ELSE ResultN
END
Bu ifade, sonucu bulmak için bir dizi boole ifadesini değerlendirir. Bu ifade, her bir Boole ifadesinde karşılaştırma işleçlerine ve AND / OR mantıksal işleçlerine izin verir.
1. CASE ifadeleri ile SELECT deyimi
--Simple CASE expression:
SELECT FirstName, State=(CASE StateCode
WHEN 'MP' THEN 'Madhya Pradesh'
WHEN 'UP' THEN 'Uttar Pradesh'
WHEN 'DL' THEN 'Delhi'
ELSE NULL
END), PayRate
FROM dbo.Customer
-- Searched CASE expression:
SELECT FirstName,State=(CASE
WHEN StateCode = 'MP' THEN 'Madhya Pradesh'
WHEN StateCode = 'UP' THEN 'Uttar Pradesh'
WHEN StateCode = 'DL' THEN 'Delhi'
ELSE NULL
END), PayRate
FROM dbo.Customer
CASE ifadesi ile ifade güncelleme
-- Simple CASE expression:
UPDATE Customer
SET StateCode = CASE StateCode
WHEN 'MP' THEN 'Madhya Pradesh'
WHEN 'UP' THEN 'Uttar Pradesh'
WHEN 'DL' THEN 'Delhi'
ELSE NULL
END
-- Simple CASE expression:
UPDATE Customer
SET StateCode = CASE
WHEN StateCode = 'MP' THEN 'Madhya Pradesh'
WHEN StateCode = 'UP' THEN 'Uttar Pradesh'
WHEN StateCode = 'DL' THEN 'Delhi'
ELSE NULL
END
3. CASE ifadeleriyle ORDER BY yan tümcesi
-- Simple CASE expression:
SELECT * FROM dbo.Customer
ORDER BY
CASE Gender WHEN 'M' THEN FirstName END Desc,
CASE Gender WHEN 'F' THEN LastName END ASC
-- Searched CASE expression:
SELECT * FROM dbo.Customer
ORDER BY
CASE WHEN Gender='M' THEN FirstName END Desc,
CASE WHEN Gender='F' THEN LastName END ASC
CASE ifadesi ile 4.Fıkra
-- Simple CASE expression:
SELECT FirstName ,StateCode,Gender, Total=MAX(PayRate)
FROM dbo.Customer
GROUP BY StateCode,Gender,FirstName
HAVING (MAX(CASE Gender WHEN 'M'
THEN PayRate
ELSE NULL END) > 180.00
OR MAX(CASE Gender WHEN 'F'
THEN PayRate
ELSE NULL END) > 170.00)
-- Searched CASE expression:
SELECT FirstName ,StateCode,Gender, Total=MAX(PayRate)
FROM dbo.Customer
GROUP BY StateCode,Gender,FirstName
HAVING (MAX(CASE WHEN Gender = 'M'
THEN PayRate
ELSE NULL END) > 180.00
OR MAX(CASE WHEN Gender = 'F'
THEN PayRate
ELSE NULL END) > 170.00)
Umarım bu kullanım vakaları gelecekte birine yardımcı olur.
SELECT
Store_Name,
CASE Store_Name
WHEN 'Los Angeles' THEN Sales * 2
WHEN 'San Diego' THEN Sales * 1.5
ELSE Sales
END AS "New Sales",
Txn_Date
FROM Store_Information;
ELSE Sales
başka bir şekilde dahil edilmemişse varsayılan değerleri döndüren ve iş sorguları için uygun olan bir alanın dahil edilmesi nedeniyle yukarı oylama .
select id,phno,case gender
when 'G' then 'M'
when 'L' then 'F'
else
'No gender'
end
as gender
from contacts
UPDATE table_name
SET column_name=CASE
WHEN column_name in ('value1', 'value2',.....)
THEN 'update_value'
WHEN column_name in ('value1', 'value2',.....)
THEN 'update_value'
END
table_name
= İşlem yapmak istediğiniz tablonun adı.
column_name
= Ayarlamak istediğiniz sütunun / alanın adı.
update_value
= Ayarlamak istediğiniz değer column_name
Select s.stock_code,s.stock_desc,s.stock_desc_ar,
mc.category_name,s.sel_price,
case when s.allow_discount=0 then 'Non Promotional Item' else 'Prmotional
item' end 'Promotion'
From tbl_stock s inner join tbl_stock_category c on s.stock_id=c.stock_id
inner join tbl_category mc on c.category_id=mc.category_id
where mc.category_id=2 and s.isSerialBased=0