То, к чему не обращался ни один из других ответов: этот вопрос касается сравнения по строкам.Вопрос заключается в том, как продублировать эту формулу Excel в SQL:
=IF(AND(B2=B3,D2=D3,A2<>A3),"Yes","No")
Обратите внимание, например, что B2
относится к столбцу B в строке 2, а B3
относится к столбцу B в строке 3 .
Вот решение вашей проблемы, как описано.Он использует функцию T-SQL LEAD
для сравнения строк.Обратите внимание, что я не включил критерии DISTINCT
в ваш исходный запрос, так как неясно, что вы пытаетесь достичь с помощью этого.
Однако я не думаю, что это именно то, что вы хотите сделатьэтот.Сравнение между строками обычно не то, что вы делаете в SQL.Возможно, вы захотите еще немного подумать о своих требованиях и посмотреть, сможете ли вы придумать лучший способ их выполнить.
select
PathID,
MRN,
TF_Group,
case
when MRN = Next_MRN and TF_Group = Next_TF_Group and PathID <> Next_PathID then 'Yes'
else 'No'
end as Flag
from (
select
[Pathway Id] as PathID,
MRN,
[Treatment Function Group] as TF_Group,
lead([Pathway Id]) over (order by MRN, [Pathway ID]) as Next_PathID,
lead(MRN) over (order by MRN, [Pathway ID]) as Next_MRN,
lead([Treatment Function Group]) over (order by MRN, [Pathway ID]) as Next_TF_Group
from tbl_PMM_IncompletePTL_CG_Snapshot
) x
order by MRN, PathID
Обратите внимание, что этот ответ по сути дублирует тот, который я разместил навопрос, который был отмечен как дубликат.Я перенес его сюда, чтобы он не потерялся, и чтобы у любого, кто найдет этот вопрос, был такой ответ.