Рассмотрим условное агрегирование, которое все равно будет работать в MS Access (замените IF
на IIF
ниже). Обычно кросс-таблица запроса Access для поворотных столбцов более, чем несколько, в отличие от текущей версии пяти. Кроме того, ваш NZ
является избыточным, поскольку NULL
разрешается до N
в соответствии с условной логикой.
SELECT s.tracking_number,
s.invoice_number,
MAX(IF(s.[charge_description_code] = 'SAT', 'Y', 'N')) AS 'SAT',
MAX(IF(s.[charge_description_code] = 'AHW', 'Y', 'N')) AS 'AHW',
MAX(IF(s.[charge_description_code] = 'AHL', 'Y', 'N')) AS 'AHL',
MAX(IF(s.[charge_description_code] = 'AHS', 'Y', 'N')) AS 'AHS',
MAX(IF(s.[charge_description_code] = 'RES', 'Y', 'N')) AS 'SAT'
FROM shipment_details s
WHERE s.tracking_number IS NOT NULL
AND s.charge_category_detail_code NOT IN ('RADJ')
AND s.charge_description_code IN ('AHS','AHW','AHL','RES','SAT')
GROUP BY s.tracking_number,
s.invoice_number