You are on page 1of 4

--Case

--CASE <expr>
-- WHEN <value 1> THEN <result 1>
-- WHEN <value 2> THEN <result 2>
-...
-- WHEN <value N> THEN <result N>
-- [ELSE <defualt>]
--END
--CASE

go
SELECT *
FROM Orders
go
SELECT
CASE Cust_Name
WHEN '' THEN 1
WHEN '' THEN 2
ELSE 3
END UserNo
FROM orders

go
SELECT *
FROM Employees
go

SELECT
CASE SUBSTRING(Emp_id,2,1)
WHEN '1' THEN ''
WHEN '2' THEN ''
ELSE 'Unknown'
END Sex
FROM Employees

------------------------------------------------------------------CASE
--CASE <expr>
-- WHEN <bool expr 1> THEN <result 1>
-- WHEN <bool expr 2> THEN <result 2>
-...
-- WHEN <bool expr N> THEN <result N>
-- [ELSE <defualt>]
--END
--CASE
-NULL

go
SELECT *
FROM Orders
go

SELECT
CASE
WHEN Cust_Name='' THEN 1
WHEN Cust_Name='' THEN 2
ELSE 3
END UserNo
,
CASE
WHEN Cust_Name LIKE '%' THEN ''
ELSE ''
END SEX
,
CASE
WHEN QTY BETWEEN 0 AND 10 THEN 0.10
WHEN QTY BETWEEN 11 AND 13 THEN 0.15
WHEN QTY >=14
THEN 0.2
END Discount
,
CASE
WHEN Cust_Name in ('','') THEN 1
ELSE 0
END VIP
FROM Orders

------------------------------------------------------------------SQLTable Employees
--
--SQL
--Hint:(self join)
--()

go
SELECT *
FROM Employees
go

SELECT Emp_Name,Salary
FROM Employees
Order by Salary
go
SELECT a1.Emp_Name, a1.Salary, COUNT(a2.Salary) as Sales_Rank
FROM Employees a1, Employees a2
WHERE a1.Salary <= a2.Salary or (a1.Salary=a2.Salary and
a1.Emp_Name = a2.Emp_Name)
GROUP BY a1.Emp_Name, a1.Salary
ORDER BY a1.Salary DESC, a1.Emp_Name DESC;
go

--WHERE (a1.Salary <= a2.Salary)


--Salary
--Salary
--WHERE
--Where(a1.Salary=a2.Salary and a1.Emp_Name =
a2.Emp_Name)
-- Salary

You might also like