Я нахожусь в процессе создания SQL в SFMC. У меня есть три атрибута в исходном расширении данных:

  • глобальный идентификатор,

  • Категория Описание

  • МАКС (да, имя странное, но не в этом дело...).

Чего я хочу добиться, так это переместить в целевое расширение данных все три атрибута, но только запись с самым высоким значением атрибута MAX (128614,150). Это последняя запись (см. прилагаемое фото).

Таким образом, целевой DE будет иметь только одну запись:

GlobalID, Описание категории, MAX

1000047634, Категория 8, 128614.150

Большое спасибо за Вашу помощь!

to

1
Community 15 Июн 2020 в 11:11

1 ответ

Вы не сказали, как называется ваше расширение данных, я предполагаю, что это DataExtension1. Я думаю, что это должно работать:

SELECT GlobalID, CategoryDescription, MAX 
FROM DataExtension1 
WHERE MAX = (SELECT Max(MAX) FROM DataExtension1)  

Обратите внимание, что с помощью этого оператора вы получите 2 записи, если есть 2 строки с одинаковым значением MAX.

Надеюсь, это поможет.

PS: обратите внимание, что существуют инструменты, такие как deselect.io, которые помогают вы создаете такие сложные выборки без необходимости писать SQL-запрос.

0
Jonathan Van Driessen 22 Ноя 2019 в 11:45
Привет Джонатан Спасибо за ваш ответ. Мой дополнительный вопрос. Что делать, если у меня больше атрибутов GlobalID и я хочу видеть наивысшее значение категории для всех GlobalID? Было бы возможно? Результат будет примерно таким: Запись 1) 1000047634, Категория 8, 128614.150; Запись 2) 1000047659, Категория 5, 3893.000; Запись 3) 1000047678, Категория 6, 7243.24 Большое спасибо.
 – 
Juraj Resko
22 Ноя 2019 в 13:20
Вы публикуете только тогда, когда можете подключить свой продукт?
 – 
AnonWonderer
23 Ноя 2019 в 02:27
Juraj, я прочитал ваш комментарий 5 раз и до сих пор не уверен на 100%, что правильно понял :) Ваш вопрос состоит в том, чтобы получить запись с самым высоким MAX для каждого GlobalID? В этом случае я думаю, что это то, что вам нужно: SELECT GlobalID, CategoryDescription, MAX FROM (SELECT GlobalID, Max(MAX) AS Max FROM DataExtension1 GROUP BY GlobalID) AS M INNER JOIN DataExtension1 ON DataExtension1.GlobalID = M.GlobalID AND DataExtension1. Max = M.Max В случае, если вам не нужно описание категории, это будет намного проще: SELECT GlobalID, Max(MAX) AS Max FROM DataExtension1 GROUP BY GlobalID
 – 
Jonathan Van Driessen
29 Ноя 2019 в 11:33
Привет @JonathanVanDriessen. Мне нужно было сделать какой-то обходной путь для этого. В этом случае мне пришлось использовать функцию rownum. Чтобы создать атрибут ранга для всех значений «MAX», а затем отфильтровать самое высокое значение, равное номеру ранга. Однако, спасибо! :)
 – 
Juraj Resko
10 Дек 2019 в 18:35
Спасибо, что поделились @JurajResko!
 – 
Jonathan Van Driessen
12 Дек 2019 в 09:01