Я использую Oracle SQL для вывода списка клиентов и дней их доставки в Excel. Формат данных таков, что каждый день доставки имеет свою собственную запись, поэтому, если клиент 10001 получит поставки в понедельник, среду и пятницу, я верну три записи (в данном случае: 2, 4, 6 с наших недель). начало по воскресеньям).
Я использовал CASE, чтобы преобразовать их в инициалы (M, W, F), но очевидно, что есть еще три записи.
Сначала я думал, что это проблема конкатенации (я ОЧЕНЬ новичок в коде SQL), поэтому я попробовал стандартные двойные каналы (||), но это не тот же тип конкатенации (я выучил двойные каналы) предназначены для объединения различных полей).
Вот где сейчас находится мой код:
SELECT
TRIPS.CUSTOMER_NO||TRIPS.CUSTOMER_NAME as CUSTOMER,
CASE
WHEN TRIPS.DAY_NO= 1 THEN 'U'
WHEN TRIPS.DAY_NO= 2 THEN 'M'
WHEN TRIPS.DAY_NO= 3 THEN 'T'
WHEN TRIPS.DAY_NO= 4 THEN 'W'
WHEN TRIPS.DAY_NO= 5 THEN 'R'
WHEN TRIPS.DAY_NO= 6 THEN 'F'
WHEN TRIPS.DAY_NO= 7 THEN 'S'
ELSE '0'
END AS DAYS
FROM DB.TRIPs
В конце я хотел бы, чтобы каждый клиент возвращал одну запись с конкатенацией дней доставки (в данном случае, в MWF). У нас много тысяч клиентов, и мне в настоящее время приходится выполнять эту задачу очень неуклюже, используя сводную таблицу.