2012-05-31 2 views
0

У меня есть база данных в доступе 2010.Доступ 2010: Как сопоставить два поля в одной таблице?

A есть таблица с несколькими полями. Три из них - «ввод», «вывод» и «дата». А также имеют общий запрос количества.

Я хочу суммировать все значения «ввода», которые имеют одинаковую «дату», и я также хочу суммировать все «выходные», которые имеют одинаковую «дату».

Я хочу, чтобы мой запрос нашел результат вывода («input» - «output», который имеет одинаковую «дату»).

Мой вопрос заключается в том, как сопоставить разные вставки, имеющие одно и то же значение «дата».

Любая помощь пожалуйста?

EDITED:

input  output  date 
    3   0   2/5/2012 
    4   0   8/5/2012 
    0   2   2/5/2012 
    0   1   8/5/2012 

Я хочу, чтобы мой запрос показать

available stock  date 
    (3-2=) 1  2/5/2012 
    (4-1=) 3  8/5/2012 

EDITED v2:

My SQL код

SELECT SUM(warehouse.in_quant)-SUM(warehouse.out_quant) AS SUM, 
drugs.active_substance, drugs.strength, drugs.strength_type, drugs.dosage_form, 
warehouse.available_stock, drugs.minimum_quantity, IIf([warehouse]![available_stock] 
[drugs]![minimum_quantity],"YES!","No") AS DiplayText, warehouse.curr_date 
FROM drugs INNER JOIN warehouse ON drugs.ID = warehouse.drug_id; 

Я получаю это сообщение:

Вы пытались выполнить запрос, который не включает указанное выражение «active_substance» как часть агрегатной функции.

Когда я удаляю SUM (store.in_quant) -SUM (warehouse.out_quant) AS SUM, он отлично работает.

+1

GROUP BY каждое поле, которое вы не суммируете. – Fionnuala

ответ

1

Перейдите в окно дизайна запроса, добавьте соответствующие таблицы, перетащите поля, которые вы хотите сопоставить, из одной таблицы в другую. Контрольная работа. Если это не то, что вам нужно, отправьте здесь sql с образцами данных и объясните проблему.

SELECT i.Input-o.Output As Stock, i.Date 
FROM (SELECT Input FROM Table 
     WHERE Input > 0) i 
LEFT JOIN 
    (SELECT Output FROM Table 
     WHERE Output > 0) o 
ON i.Date = o.Date 

Возможно, вам понадобится что-то более сложное, но это должно быть началом, надеюсь.

Re комментарии

SELECT drugs.active_substance, 
     drugs.strength, 
     drugs.strength_type, 
     drugs.dosage_form, 
     warehouse.available_stock, 
     drugs.minimum_quantity, 
     warehouse.curr_date, 
     SUM(warehouse.in_quant)-SUM(warehouse.out_quant) AS SUMQty 
FROM drugs 
INNER JOIN warehouse ON drugs.ID = warehouse.drug_id 
GROUP BY drugs.active_substance, 
     drugs.strength, 
     drugs.strength_type, 
     drugs.dosage_form, 
     warehouse.available_stock, 
     drugs.minimum_quantity, 
     warehouse.curr_date 
+0

Поля находятся в одной таблице. – zinon

+0

Вы можете добавить одну и ту же таблицу дважды. – Fionnuala

+0

Я добавил примечание. – Fionnuala

1

Я не совсем уверен, что ваш запрашиваемая но суммировать значения по дате следует использовать группу по п

SELECT SUM(input) - SUM(output) as 'Input - Output', date 
FROM myTable 
GROUP BY date 

Here является примером этого, что Я думаю, что вы пытаетесь это сделать.

+0

Это то, что я хочу, но у меня есть проблема. См. Выше, пожалуйста. – zinon

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