sql - এসকিউএল সার্ভার: CASE যখন বা পরে শেষ হয়=> বা সমর্থিত হয় না




sql-server tsql (7)

আপনি যখন WHEN এর এমন একটি এক্সপ্রেশন ব্যবহার করতে পারেন তবে আপনি উভয়কে মিশ্রিত করতে পারবেন না।

  1. যখন __presspress

    সাধারণ CASE বিন্যাস ব্যবহার করা হয় যখন একটি ইনপুট_ এক্সপ্রেশন তুলনা করা হয় যা একটি সহজ অভিব্যক্তি। when_expression কোন বৈধ অভিব্যক্তি। Input_expression এর ডাটা প্রকার এবং প্রতিটি when_expression একই হতে হবে অথবা অবশ্যই একটি অন্তর্নিহিত রূপান্তর হওয়া আবশ্যক।

  2. যখন বুলিয়ান_ এক্সপ্রেশন

    অনুসন্ধানযোগ্য CASE বিন্যাস ব্যবহার করার সময় বোলেনিয়ান অভিব্যক্তি মূল্যায়ন করা হয়। Boolean_expression কোনও বৈধ বুলিয়ান অভিব্যক্তি।

আপনি প্রোগ্রাম করতে পারে:

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

কিন্তু যেকোনো ক্ষেত্রে আপনি আশা করতে পারেন যে পরিবর্তনশীল র্যাঙ্কিংটি বুলিয়ান এক্সপ্রেশনতে তুলনা করা যাচ্ছে।

কেস দেখুন (ট্র্যাক্ট্যাক্ট-এসকিউএল) (এমএসডিএন)।

OR CASE বিবৃতির WHEN ধারাটি সমর্থিত নয়। কিভাবে আমি এটি করতে পারব?

CASE ebv.db_no 
    WHEN 22978 OR 23218 OR 23219 THEN 'WECS 9500' 
    ELSE 'WECS 9520' 
END as wecs_system 

চেষ্টা

CASE WHEN ebv.db_no IN (22978,23218,23219) THEN 'WECS 9500' ELSE 'WECS 9520' END

CASE সম্মান সঙ্গে ইতিমধ্যে উত্তর অনেক আছে। কখন এবং কিভাবে CASE ব্যবহার করব তা ব্যাখ্যা করব।

আপনি এসকিউএল প্রশ্নের কোথাও CASE এক্সপ্রেশন ব্যবহার করতে পারেন। কেস এক্সপ্রেশনগুলি SELECT বিবৃতিতে ব্যবহার করা যেতে পারে, যেখানে ক্লজগুলি, ধারা অনুসারে আদেশ, হাউজিং বিভাগ, সন্নিবেশ, আপডেট এবং বিবৃতি মুছে ফেলা হবে।

একটি কেস এক্সপ্রেশন নিম্নলিখিত দুটি বিন্যাস আছে:

  1. সহজ কেস এক্সপ্রেশন

    CASE expression
    WHEN expression1 THEN Result1
    WHEN expression2 THEN Result2
    ELSE ResultN
    END

    এটি ফলাফলটি খুঁজে পেতে সহজ অভিব্যক্তিগুলির একটি সেটের একটি অভিব্যক্তিকে তুলনা করে। এই অভিব্যক্তিটি সমতুল্যতার জন্য প্রতিটি WHEN ধারাটিতে অভিব্যক্তিটির একটি অভিব্যক্তি তুলনা করে। যদি WHEN ধারাটি মিলিত হয় তবে THEN বিভাগে অভিব্যক্তিটি ফেরত দেওয়া হবে।

    এটাই হ'ল ওপি এর প্রশ্ন পতন ঘটছে। 22978 OR 23218 OR 23219 অভিব্যক্তি যেমন ebv.db_no সমান একটি মান পাবেন না। এটি কেন একটি ত্রুটি প্রদান করা হয়। Input_expression এর ডাটা প্রকার এবং প্রতিটি when_expression একই হতে হবে অথবা অবশ্যই একটি অন্তর্নিহিত রূপান্তর হওয়া আবশ্যক।

  2. অনুসন্ধান কেস এক্সপ্রেশন

    CASE
    WHEN Boolean_expression1 THEN Result1
    WHEN Boolean_expression2 THEN Result2
    ELSE ResultN
    END

    এই অভিব্যক্তি ফলাফল খুঁজে Boulan এক্সপ্রেশন একটি সেট মূল্যায়ন। এই অভিব্যক্তি তুলনা অপারেটর, এবং লজিক্যাল অপারেটর এবং / অথবা প্রতিটি বুলিয়ান অভিব্যক্তি সহ।

কেস এক্সপ্রেশন সঙ্গে 1.SELECT বিবৃতি

--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

2. CASE অভিব্যক্তি সঙ্গে বিবৃতি আপডেট করুন

-- 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 

CASE এক্সপ্রেশন সঙ্গে ধারা দ্বারা 3.ORDER

-- 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

4. CASE অভিব্যক্তি সঙ্গে ক্লোজ রাখা

-- 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)

এই ব্যবহার ক্ষেত্রে ভবিষ্যতে কেউ সাহায্য করবে আশা করি।

Source


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 

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;

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 

select id,phno,case gender
when 'G' then 'M'
when 'L' then 'F'
else
'No gender'
end
as gender 
from contacts





case-when