Подскажите пожалуйста. Имеется таблица на листе Statistics. Над таблицей есть 2 ячейки Месяц и Год, которые берут данные с листа ММГГ в виде подстановочного списка.
Есть также 2 листа INB_STAT и RAZM_STAT, оттуда задуман источник данных, в таблицах на них есть такие же Месяц, Год и Логины сотрудников.
Подскажите пожалуйста правильный ВПР или формулу наподобие, чтобы в зависимости от выбранных месяца, года в основную таблицу в колонку Receiving подставлялись цифры изпоследней колонки таблицы с листа INB_STAT?
Заранее спасибо))
Добрый день.
Подскажите пожалуйста. Имеется таблица на листе Statistics. Над таблицей есть 2 ячейки Месяц и Год, которые берут данные с листа ММГГ в виде подстановочного списка.
Есть также 2 листа INB_STAT и RAZM_STAT, оттуда задуман источник данных, в таблицах на них есть такие же Месяц, Год и Логины сотрудников.
Подскажите пожалуйста правильный ВПР или формулу наподобие, чтобы в зависимости от выбранных месяца, года в основную таблицу в колонку Receiving подставлялись цифры изпоследней колонки таблицы с листа INB_STAT?
SELECT t1.*, [Receiving], [Putaway], IIF( [Receiving] IS NULL, IIF( [Putaway] IS NULL, NULL, [Putaway] ), IIF( [Putaway] IS NULL, [Receiving], [Receiving]+[Putaway] ) ) AS [Total receiving & putaway] FROM [Список смен] t1 INNER JOIN ( SELECT [Логин], SUM([Принято линий]) AS Receiving, SUM([Размещено линий]) AS Putaway FROM ( SELECT [Год], [Месяц], ( SELECT FIRST( IIF( [Логин] IS NULL, [Логин SAP], [Логин] ) ) FROM [Список смен] WHERE [Логин]=t1.[Логин] OR [Логин SAP]=t1.[Логин] ) AS [Логин], [Принято линий], NULL AS [Размещено линий] FROM [\\RU-TRF4490X21\BASE\TOTAL\Total Activity.accdb].tb_inb_stat t1 UNION ALL SELECT [Год], [Месяц], ( SELECT FIRST( IIF( [Логин] IS NULL, [Логин SAP], [Логин] ) ) FROM [Список смен] WHERE [Логин]=t2.[Логин] OR [Логин SAP]=t2.[Логин] ) AS [Логин], NULL, [Размещено линий] FROM [\\RU-TRF4490X21\BASE\TOTAL\Total Activity.accdb].tb_razm_stat t2 ) t1 WHERE t1.[Год]=? and t1.[Месяц]=? GROUP BY t1.[Год], t1.[Месяц], t1.[Логин] ) t2 ON t1.[Логин SAP] = t2.[Логин] OR t1.[Логин] = t2.[Логин]
[/vba]
До кучи SQL запрос с параметрами (через MSQuery)
[vba]
Код
SELECT t1.*, [Receiving], [Putaway], IIF( [Receiving] IS NULL, IIF( [Putaway] IS NULL, NULL, [Putaway] ), IIF( [Putaway] IS NULL, [Receiving], [Receiving]+[Putaway] ) ) AS [Total receiving & putaway] FROM [Список смен] t1 INNER JOIN ( SELECT [Логин], SUM([Принято линий]) AS Receiving, SUM([Размещено линий]) AS Putaway FROM ( SELECT [Год], [Месяц], ( SELECT FIRST( IIF( [Логин] IS NULL, [Логин SAP], [Логин] ) ) FROM [Список смен] WHERE [Логин]=t1.[Логин] OR [Логин SAP]=t1.[Логин] ) AS [Логин], [Принято линий], NULL AS [Размещено линий] FROM [\\RU-TRF4490X21\BASE\TOTAL\Total Activity.accdb].tb_inb_stat t1 UNION ALL SELECT [Год], [Месяц], ( SELECT FIRST( IIF( [Логин] IS NULL, [Логин SAP], [Логин] ) ) FROM [Список смен] WHERE [Логин]=t2.[Логин] OR [Логин SAP]=t2.[Логин] ) AS [Логин], NULL, [Размещено линий] FROM [\\RU-TRF4490X21\BASE\TOTAL\Total Activity.accdb].tb_razm_stat t2 ) t1 WHERE t1.[Год]=? and t1.[Месяц]=? GROUP BY t1.[Год], t1.[Месяц], t1.[Логин] ) t2 ON t1.[Логин SAP] = t2.[Логин] OR t1.[Логин] = t2.[Логин]