Я читал и погружался в глубины SQL, и я думаю, что я успешно смутился по этому поводу сейчас. Пример таблица у меня есть:MS Access SQL Transform Aggregate Manipluation значений для Pivot
Date Quantity Type Date_Entered
01/02/15 23 Orange 10/01/15
01/02/15 10 Red 10/01/15
01/02/15 18 Yellow 10/01/15
02/02/15 15 Yellow 10/01/15
02/02/15 19 Red 10/01/15
. . . .
. . . .
Дата является календарной датой предполагаемых продаж, количество является количеством продаж, типа является типом продукта (это может изменяться в зависимости от количества видов), Date_Entered является дата, когда данные были помещены в таблицу, и дает прогноз для других столбцов. Для каждого Date_Entered существует диапазон дат (скажем, весь 2015). Для каждой даты доступно все доступные типы.
Теперь, я пытался повернуть таблицу с запросом SQL в MS Access (потому что я использую это с помощью макроса в Excel), чтобы получить таблицу, как следующее:
Date Orange Red Yellow
01/02/15 3 2 5
02/02/15 0 -2 -1
03/02/15 8 -1 2
. . . .
. . . .
Где значения представляют собой разницу между количеством, проданным за определенную Дату, с одной даты_Энементной на другую (например, изменение прогнозируемых продаж за неделю, месяц, квартал).
До сих пор я эволюционировали следующее:
TRANSFORM IIF(FIRST([Date_Entered]) > LAST([Date_Entered]),
FIRST([Quantity]) - LAST([Quantity]),
LAST([Quantity]) - FIRST([Quantity]))
SELECT [Date] FROM Sales WHERE [Date_Entered] = #2015-01-10# OR #2015-01-20#
GROUP BY [Date] ORDER BY [Date] PIVOT [Type]"
Однако FIRST(), кажется, просто вывести нули и поэтому выше не дает правильные цифры. Моя проблема, я думаю, разрабатывает совокупность, необходимую для вычисления значений для таблицы. Надеюсь, кто-то может указать мне в правильном направлении.
Благодарим за любые ответы.
Просто проверили это и Wow! Спасибо! Некоторое время я боролся за это. Почему дата не принимает «ИЛИ»? и в качестве побочного вопроса можно было бы включить имена полей в возвращаемый запрос? – area9
Рад, что я мог помочь. Дело не в том, что Date не принимает OR, но, как было написано, Access интерпретировал его как логическое, например. # 2015-01-20 # <> Неверно. Если вы включили [Date_Entered] в выражение ([Date_Entered] = # 2015-01-20 #, то вы получили бы тот же результат, что и с использованием предложения IN. –
ah ok - это имеет больше смысла сейчас. – area9