#sql
#sql
Вопрос:
В запрос на основе «Выбора» я хотел бы включить выражение, которое гласит: если столбец B = «Вызов», замените все в столбце A на «Вызов».
Я попробовал выражение When-Then:
Column A = (CASE column a
When 'Business' Then 'Call'
Но это изменит каждую бизнес-запись в столбце A, когда в столбце B нет «Вызова».
Я подумал, что мне понадобится оператор 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.
Простите за недостаток знаний. Я не хочу редактировать фактическую таблицу данных, а хочу только просматривать данные на основе моих параметров.
Заранее спасибо!
Комментарии:
1. Большое вам спасибо, ребята! Выражение «case» было удачным!
2. вы можете отметить любой, если вопрос, который помог вам, соответствует вашему комментарию выше!!! если это помогло, у сообщества должно быть больше правильных ответов!!!
Ответ №1:
Ваше case
выражение также будет работать, вы просто пропустили else
пункт и условие columnB = 'Call'
:
CASE WHEN columna = 'Business' AND columnB = 'Call' THEN 'Call' ELSE columna END AS ColumnA
Ответ №2:
Это то, что вы хотите?
update t
set a = b
where b = 'Call';
Комментарии:
1. К сожалению, я не могу использовать оператор Update, поскольку я не могу манипулировать данными в таблице. Я могу запрашивать только данные.
Ответ №3:
Вы можете ссылаться на другие столбцы из инструкции 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')
Ответ №4:
это будет работать:
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')
Ответ №5:
Это может сработать..
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')
Ответ №6:
Надеюсь, это сработает!
Select case when c.B = 'Call' Then 'Call' Else c.A End, c.B
From crimes as c
Where date_rept between '1/1/2019' and '1/31/2019'
AND B in ('Call', 'Case')
Ответ №7:
Вам понадобится оператор else, подобный этому:
(CASE WHEN columnb = 'Call' THEN 'Call' ELSE columna END) AS "Column A"
Конечно, вам нужно адаптировать синтаксис к вашему диалекту SQL (о котором вы не упомянули), но это логика.