vasini Ответов: 1

PL SQL-query question


Привет,

Я новичок в Pl / SQl. У меня есть тестовая таблица с 3 столбцами.

Столбец1 Столбец2 Столбец3
-------------------------------------------------

100 CA, OH AR, CA

200 FL, MI MI, NY


Итак, здесь, в таблице, когда я сравниваю column2 с column3, я добавил AR и удалил OH для ID 100. За 200 я удалил FL и добавил NY.

Как я могу найти, какую строку я добавил в столбец 3 и какую строку я удалил из столбца 2?

Мне нужен такой ответ ...

Из 100, OH удалил и AR добавил.
Из 200, FL удален и NY добавлен.

Кто-нибудь может помочь мне это выяснить?

Заранее большое вам спасибо.

Что я уже пробовал:

Я попробовал функцию strcomp, и она дала мне понять, изменилась ли строка или нет. Но мне нужна точная строка того, что было изменено.

1 Ответов

Рейтинг:
8

itsmypassion

Следующий запрос решит вашу проблему

With Test_CTE(Column1,FirstColumn2,SecondColumn2,Column2,FirstColumn3,SecondColumn3,Column3)
AS(
Select column1,SUBSTRING(column2,1, charindex(',',Column2,1)-1) as FirstColumn2,
SUBSTRING(column2,charindex(',',Column2,1)+1,10) SecondColumn2,Column2,
SUBSTRING(column3,1, charindex(',',Column3,1)-1) as FirstColumn3,
SUBSTRING(column3,charindex(',',Column3,1)+1,10) SecondColumn3,Column3 from tab1
)
Select Column1,( CASE WHEN CHARINDEX(FirstColumn2 ,column3,1)> 0 then (CASE WHEN CHARINDEX(SecondColumn2 ,column3,1)> 0 then '' else SecondColumn2  + ' Deleted' end ) else FirstColumn2 + ' Deleted ' end ) 
+ ' and ' + (CASE WHEN CHARINDEX(FirstColumn3 ,column2,1)> 0 then (CASE WHEN CHARINDEX(SecondColumn3 ,column2,1)> 0 then '' else SecondColumn3  + ' Added' end ) else FirstColumn3 + ' Added ' end)  as Result   ,Column2,column3 ,CHARINDEX(FirstColumn2 ,column3,1)from TEst_CTE