Есть ли функция sql, которая может посмотреть на выход и сказать, равны ли ячейка и ячейка над ней? - PullRequest
0 голосов
/ 02 мая 2019

это функция, аналогичная оконным функциям, ведущим или запаздывающим, которые позволяют вам взять вывод sql и сравнить ячейку в одной строке, а затем строку над ней, а затем дать значение на основе того, отличаются ли они

вывод

column1     column2
    7  
    7        same

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Таблицы SQL представляют неупорядоченные наборы - и это также верно для наборов результатов, если только они не имеют ORDER BY для самых внешних SELECT.

Нет "ячейка над ней "или предыдущая строка , если не указан критерий заказа.Если вы это сделаете, то LAG() сделает то, что вы хотите:

select t.*,
       (case when column1 = lag(column1) over (order by . . . )
             then 'same'
        end) as column2
from t
order by . . .;

. . . для критерия порядка.Оно должно быть одинаковым в обоих местах.

2 голосов
/ 02 мая 2019
select 
   column1,
   CASE WHEN LAG(column1) OVER (ORDER BY column1) =column1 THEN 'same' END AS column2
from [table]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...