У меня есть три таблицы, которые объединены.TableA имеет уникальные значения для Column1 (ID), который присоединяется к TableC на Column1, который имеет неуникальные значения.В настоящее время я присоединяюсь к ним на основе максимального значения для Column2 в TableC.Возвращение значения в TableB, которое просто соединяется с TableC.
Однако я хочу настроить это так, чтобы, если TableB.Column2 имеет любое значение больше 0 в TableC.Column2, это выбирается как максимальное значение,если оно равно 0, то максимальное значение обычно выбирается на основе числового значения.
Текущий запрос, который у меня есть, таков:
Select [TableA].Column2,
FIRST_VALUE([TableB].Column2) OVER (PARTITION BY [TableA].Column2 ORDER BY MAX([TableC].Column2) Desc)
From [TableC] Left Join
[TableA]
On [TableA].Column1 = [TableC].Column1 Left Join
[TableB]
On [TableB].Column3 = [Table3].Column3
То, что я ожидаю, это то, что если:
TableC.Column2> '0', где TableB.Column2 = 'KEYVALUE', затем покажите Table.Column2 на основе TableC.Column3, однако если TableC.Column2 = '0', где TableB.Column2 = 'KEYVALUE'затем показать результат [TableB] .Column2 на основе MAX [TableC] .Column2
Образцы данных:
Пример вывода:
S7000, KEYVALUE
S6500, OTHERVALUE1
Надеюсь, что все имеет смысл, спасибо.