Vikram Singh Rathaur Ответов: 2

Как сравнить значения двух последовательных строк в SQL


Hi Experts,

I have data related to Employees Branch change log in one of the table as following.


UniqueID  UID  Branch_Id Created_On    Created_By
   18791   173 31  2-Jul-2020  939
   18411   173 31  15-May-2020 5047
   17867   173 31  23-Mar-2020 939
   14614   173 27  25-Jul-2019 4165
   12958   173 27  11-May-2019 4065
   11783   173 27  7-Mar-2019  939
   11780   173 27  7-Mar-2019  939
   9719    173 27  14-Nov-2018 939
   9304    173 27  18-Oct-2018 939
   9103    173 27  9-Oct-2018  939
   7958    173 27  17-Sep-2018 939
   4549    173 27  15-Mar-2018 939
   3272    173 27  9-Jan-2018  939
   2844    173 20  6-Dec-2017  939
   2481    173 20  8-Nov-2017  939
   58           173    27  4-Jul-2013  1


Имя/идентификатор ветви изменяется несколько раз, как указано выше

Мне нужно отобразить вышеприведенные данные следующим образом.

UniqueId  UID	 Branch_Id  Created_On	   Created_By
    17867	  173	  31	    23-Mar-2020	     939
    3272	  173	  27	    9-Jan-2018	      939
    2481	  173	  20	    8-Nov-2017	      939
    58	          173	  27	    4-Jul-2013	      1


Please guide me how can i achieve this?

Thank you.


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

Please guide me how can i achieve this?

2 Ответов

Рейтинг:
0

adambl

Похоже, вы хотите вернуть полную строку для самой ранней записи для каждой ветви.

Исходя из этого предположения, вы можете использовать GROUP BY для группировки всех строк для каждой ветви и Min для извлечения UniqueId для самой ранней строки для каждой группы. Затем вы можете использовать этот список UniqueIds для фильтрации исходного набора строк.

Предположим, что ваша таблица называется LogTable:

SELECT *
FROM LogTable
INNER JOIN (SELECT Min(UniqueId) as MinUniqueId
    FROM LogTable
    GROUP BY Branch_Id) AS Filtered
    ON LogTable.UniqueId = Filtered.MinUniqueId


Maciej Los

5ed!

Vikram Singh Rathaur

Привет, Адамбл, RecordId 3272 отсутствует в журнале ветвей. Это произошло потому, что вы используете предложение Group By

Рейтинг:
0

OriginalGriff

В этих данных нет ничего очевидного, что позволяет выбрать только эти четыре строки: вам придется довольно тщательно продумать свои правила, Прежде чем вы даже начнете разрабатывать SQL-запрос.

Когда у вас есть, вы можете найти либо GROUP BY, либо LEAD/LAG полезными. Но не раньше!


Sincobile Nhlengethwa

Что вы сравниваете, какие поля вы хотите использовать для сравнения,это в каждой ветви или что-то еще?

Vikram Singh Rathaur

сравните предыдущую ветвь со следующей. На самом деле я хочу создать журнал изменений ветвей