Как выполнить запрос: «Если этот столбец содержит «это», то замените текст в другом столбце».

#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 (о котором вы не упомянули), но это логика.