2016-02-02 3 views
-4

У меня есть две таблицы, за ниже:Использование функции Sum в левое внешнее соединение

1. DatesMaster 

+----------+---------------+ 
| m_date | capacity | 
+----------+---------------+ 
| 1/2/2016 |   10 | 
| 2/2/2016 |   10 | 
| 3/2/2016 |   10 | 
+----------+---------------+ 

2. Schedule 

+----------+-------+ 
| sch_date | qty | 
+----------+-------+ 
| 1/2/2016 | 2 | 
| 1/2/2016 | 2 | 
| 1/2/2016 | 2 | 
| 2/2/2016 | 5 | 
| 2/2/2016 | 5 | 
| 3/2/2016 | 5 | 
| 3/2/2016 | 1 | 
+----------+-------+ 

Как получить результат capacity - qty используя левое внешнее соединение посредством я могу отобразить все даты из DatesMaster с Availability как разница между capacity и сумма qty тех же дат?

+1

Я использую доступ в vb.net – Subi

+1

я пытался: SELECT DatesMaster.m_date, DatesMaster.capacity - SUM (Schedule.qty) Как Баланс FROM DatesMaster LEFT OUTER JOIN Schedule ON DatesMaster.m_date = Schedule.sch_date GROUP BY DateMaster.m_date – Subi

+0

Вы пытались разрешить NULL? – Morpheus

ответ

0

Любые столбцы в вашем SELECT, которые не указаны в GROUP BY, должны содержаться в агрегатной функции, поэтому вы можете использовать MAX в этом запросе.

SELECT DatesMaster.m_date 
    ,MAX(DatesMaster.capacity) - SUM(Schedule.qty) AS Balance 
FROM DatesMaster 
LEFT JOIN Schedule ON DatesMaster.m_date = Schedule.sch_date 
GROUP BY DatesMaster.m_date 

Или добавьте capacity колонку в GROUP BY

SELECT DatesMaster.m_date 
    ,(DatesMaster.capacity) - SUM(Schedule.qty) AS Balance 
FROM DatesMaster 
LEFT JOIN Schedule ON DatesMaster.m_date = Schedule.sch_date 
GROUP BY DatesMaster.m_date, DatesMaster.capacity 
+0

выше не работает, получена ошибка: в System.Data.dll появилось необработанное исключение типа «System.Data.OleDb.OleDbException» Дополнительная информация: Вы попытались выполнить запрос, который не включает указанное выражение ' mdate 'как часть совокупной функции. – Subi

+0

Фактически, моя оригинальная таблица DatesMaster содержит m_date, которые отсутствуют в таблице расписаний .... Даты срока действия контейнера DatesMaster начиная с 1-2-2016 по 31-12-2016 гг., Где в качестве графика указаны даты 1-2-2016, 2-2 -2016 и 3-2-2016, но дублируется .... – Subi

+0

В исходном запросе у вас была опечатка в 'GROUP BY'. Можете ли вы убедиться, что это не является причиной ошибки. Измените 'DateMaster.m_date' на' DatesMaster.m_date'. Вам не хватало «s». – Morpheus

Смежные вопросы