我有一个SQL语句,有一个CASE从SELECT,我只是无法正确.你们能告诉我一个例子CASE,说明案件的条件是什么,结果来自案件.例如:
Select xxx, yyy
case : desc case when bbb then 'blackberry';
when sss then 'samsung';
end
from (select ???? .....
Run Code Online (Sandbox Code Playgroud)
结果显示
name age handphone
xxx1 yyy1 blackberry
xxx2 yyy2 blackberry
Run Code Online (Sandbox Code Playgroud) 我需要根据某种优先级从表中选择数据,如下所示:
select product, price from table1 where project = 1
-- pseudo: if no price found, do this:
select product, price from table1 where customer = 2
-- pseudo: if still no price found, do this:
select product, price from table1 where company = 3
Run Code Online (Sandbox Code Playgroud)
也就是说,如果我找到3个基于价格的产品project = X,我不想选择customer = Y.我只想返回结果3行并完成.
你怎么在SQL中做这样的事情?对pseudo-if使用某种CASE语句?做工会还是其他聪明的事情?
编辑:我正在使用MS SQL.
谢谢!
有没有办法用IN子句制作CASE语句?
SELECT
CASE c.Number
IN ('1121231','31242323') THEN 1
IN ('234523','2342423') THEN 2
END AS Test
FROM tblClient c
Run Code Online (Sandbox Code Playgroud) 我有两张桌子,
数据库1:
表格1:
Id -001(int)
名称-xxx(varchar)
男-0(位)
女1(位)
数据库2:
表2:
Id -1(int)
Ca.Name-yyy(varchar)
性别 - M或F(varchar)
这些是我的表.我想将数据库2,表2中的数据更新为database1,table1.所以我创建更新查询.但是我对性别领域有疑问
Select 'UPDATE T1
SET T1.MALE ='+ CASE WHEN r.Gender = 'M' THEN 0 ELSE 1 END
FROM T2 As r
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,我主演的内容我怀疑如何在这里使用if语句.有谁理解纠正我的问题?
我有一个包含CASE表达式语句的过程,如下所示:
BEGIN
....
WHILE counter < total DO
....
CASE ranking
WHEN 1 OR 51 OR 100 OR 167 THEN SET
project_name = 'alpha';
WHEN 2 THEN SET
project_name = 'beta';
WHEN 10 OR 31 OR 40 OR 61 THEN SET
project_name = 'charlie';
....
ELSE SET
project_name = 'zelta';
END CASE;
INSERT INTO project (id, name) VALUES (LAST_INSERT_ID(), project_name);
SET counter = counter + 1;
END WHILE;
END
$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我调用上述过程时,OR将完全跳过包含语句的案例,或者仅匹配列表中的第一项.我究竟做错了什么?
在我想知道的情况下,如果我可以使用> <而不是定义每个案例,我有多个条件可以满足
在这种情况下,当信用评级小于3时,将插入单词"NO TRADE",然后大于3,小于5则为"POOR",依此类推等等
SELECT ClientId,
FirstName,
LastName,
Gender,
DateOfBirth,
CreditRating,
CASE CreditRating
WHEN 0 THEN 'NO TRADE'
WHEN 1 THEN 'NO TRADE'
WHEN 2 THEN 'NO TRADE'
WHEN 3 THEN 'POOR'
WHEN 4 THEN 'POOR'
WHEN 5 THEN 'AVARAGE'
WHEN 6 THEN 'AVARAGE'
WHEN 7 THEN 'GOOD'
ELSE 'PERFECT'
END AS RATING
FROM dbo.client
Run Code Online (Sandbox Code Playgroud) 这是我的测试T-SQL.
DECLARE @TestVal INT
SET @TestVal = 1
SELECT
CASE @TestVal
WHEN (1 | 2 | 6) THEN 'First' // I would like to check 1 or 2 or 6.
WHEN 3 THEN 'Second'
WHEN 4 THEN 'Third'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
目前的结果是'其他'.
我想把结果称为'第一'.我如何在我的T-SQL中使用(OR语句).
最好的祝福