2015-09-09 2 views
1

Я хочу получить сводные данные из таблицы «Данные» для всех компаний в таблице «Компании», включая пустые строки, в которых нет данных в Data. .(другой) LEFT JOIN issue with ACCESS

Если я суммировать данные в вложенном ЗЕЬЕСТЕ (или в хранимом запросе я не получаю ничего из таблицы данных, например

Это суб выбрать

SELECT transco, 
      sum(m1) AS Jan15, 
FROM data 
WHERE (QVmeasure = 'Vol') 
GROUP BY QVmeasure, transco 

, который выводит:

transco Jan15 
0292 154373665 
1419 134915098 

Если я использую его в суб выбрать следующие

SELECT c.SAP_Code, 
     Jan15 
FROM Companies AS c 
LEFT JOIN (
     SELECT transco, 
       sum(m1) as Jan15 
     FROM data 
     WHERE (QVmeasure = 'Vol') 
     GROUP BY QVmeasure, transco) 
AS d 
ON c.SAP_Code = d.transco 

я получаю:

SAP_Code Jan15 
0292  
1419 

я могу получить правильный результат с помощью временной таблицы:

SELECT sum(m1) as Jan15, 
    transco 
INTO Temp_Table 
    FROM data 
    WHERE (QVmeasure = 'Vol') 
    GROUP BY QVmeasure, transco 

следуют

Select c.SAP_code, 
     jan15 
FROM companies AS c 
LEFT JOIN Temp_Table as i 
ON (c.SAP_Code = i.transco) 

дает:

SAP_code jan15 
0292 154373665 
1419 134915098 
1423 

, но если я использую временные таблицы, мне придется создавать макросы, и я хочу, чтобы пользователи могли запускать только запрос.

Следующие работы для этого простого случая, но я не могу применить это в других обстоятельствах:

SELECT c.SAP_Code, 
     sum(m1) AS Jan15 
FROM Companies AS c 
LEFT JOIN data as d 
ON c.SAP_Code = d.transco 
WHERE (d.QVmeasure = 'Vol') OR (d.QVmeasure is null) 
GROUP BY d.QVmeasure,c.sap_code 

там что-то не так с моим суб выбора синтаксиса или это ACCESS (2013)

ТИА

+1

'QVmeasure' не должно быть в' GROUP BY ', поскольку он используется только в предложении WHERE. Но это вряд ли проблема. Это * должно * работать с ИМО. --- Если вы еще не решили его сейчас, можете ли вы загрузить образец базы данных только с двумя таблицами (содержащими несколько примеров записей) в хост-файл? – Andre

ответ

0

Вы можете вложить суб-запрос, как это:

SELECT c.SAP_Code, 
    (SELECT sum(d.m1) 
    FROM data AS d 
    WHERE d.QVmeasure = 'Vol' AND c.SAP_Code = d.transco 
    ) AS [Jan15] 
FROM Companies AS c