在基于“选择”的查询中,我想包括一个表达式:如果B列=“ Call”,则将A列中的所有内容替换为“ Call”。
我尝试了“当-然后”表达式:
Column A = (CASE column a
When 'Business' Then 'Call'
但是当B列没有“通话”时,这将更改A列中的每个业务条目。
我认为我需要一个If语句左右,但是不知道如何跨列使用它。
这是我的简化查询:
Select *
From [crimes]
Where date_rept between '1/1/2019' and '1/31/2019'
And column B in ('Call', 'Case')
这就是我所拥有的:
COLUMN A COLUMN B
Natural Case
Business Call
Park Call
Business Case
这就是我想要的:
COLUMN A COLUMN B
Natural Case
Call Call
Call Call
Business Case
我希望B列中的每个“通话”都被复制到A列中。
请原谅我缺乏知识。我不想编辑实际的数据表,而只希望根据我的参数查看数据。
谢谢!
答案 0 :(得分:1)
您的case
表达式也可以使用,只是您错过了else
子句和条件columnB = 'Call'
:
CASE WHEN columna = 'Business' AND columnB = 'Call' THEN 'Call' ELSE columna END AS ColumnA
答案 1 :(得分:0)
这是您想要的吗?
update t
set a = b
where b = 'Call';
答案 2 :(得分:0)
您可以在case语句中引用其他列:
select
case when B = 'Call' then 'Call' else A end as A,
B
from [Crimes]
Where
date_rept between '1/1/2019' and '1/31/2019'
and B in ('Call', 'Case')
答案 3 :(得分:0)
这将起作用:
Select case when columnB='Call' the 'Call' else columnA end
From [crimes]
Where date_rept between '1/1/2019' and '1/31/2019'
And column B in ('Call', 'Case')
答案 4 :(得分:0)
您需要这样的else语句:
(CASE WHEN columnb = 'Call' THEN 'Call' ELSE columna END) AS "Column A"
当然,您必须使语法适应您的SQL Dialact(您没有提到),但这就是逻辑。
答案 5 :(得分:0)
希望这会起作用!
选择c.B ='Call'时的大小写,然后'Call'否则c.A End,c.B 从犯罪到c 其中date_rept在'1/1/2019'和'1/31/2019'之间 AND B(“呼叫”,“案例”)
答案 6 :(得分:0)
这可能有效。
SELECT CASE WHEN COLUMN_B= 'Call' THEN 'CALL' ELSE COLUMN_A END AS COLUMN_A,
COLUMN_B
FROM CRIMES
WHERE DATE_REPT BETWEEN '1/1/2019' AND '1/31/2019'
AND COLUMN_B IN ('Call', 'Case')