2014-01-07 3 views
-1

Я искал форум за 1 час и не нашел ничего подобного.SQL Объедините две таблицы с двумя параметрами

У меня есть эта проблема: я хочу сравнить два идентификатора colums и DATE, если они одинаковы в обеих таблицах. Я хочу поместить номер из таблицы 2 рядом с ним. Но если это не то же самое, я хочу заполнить годовую квоту на дату. Я работаю в Access.

table1

id|date|state_on_date 
1|30.12.2013|23 
1|31.12.2013|25 
1|1.1.2014|35 
1|2.1.2014|12 
2|30.12.2013|34 
2|31.12.2013|65 
2|1.1.2014|43 

table2

id|date|year_quantity 
1|31.12.2013|100 
1|31.12.2014|150 
2|31.12.2013|200 
2|31.12.2014|300 

Я хочу получить:

таблица 3

id|date|state_on_date|year_quantity 
1|30.12.2013|23|100 
1|31.12.2013|25|100 
1|1.1.2014|35|150 
1|2.1.2014|12|150 
2|30.12.2013|34|200 
2|31.12.2013|65|200 
2|1.1.2014|43|300 

Я попытался присоединяется и чтение форумов, но не нашли решение ,

ответ

0

Вы ищете это?

SELECT id, date, state_on_date, 
(
    SELECT TOP 1 year_quantity 
    FROM table2 
    WHERE id = t.id 
    AND date >= t.date 
    ORDER BY date 
) AS year_quantity 
    FROM table1 t 

Выход:

 
| ID |  DATE | STATE_ON_DATE | YEAR_QUANTITY | 
|----|------------|---------------|---------------| 
| 1 | 2013-12-30 |   23 |   100 | 
| 1 | 2013-12-31 |   25 |   100 | 
| 1 | 2014-01-01 |   35 |   150 | 
| 1 | 2014-01-02 |   12 |   150 | 
| 2 | 2013-12-30 |   34 |   200 | 
| 2 | 2013-12-31 |   65 |   200 | 
| 2 | 2014-01-01 |   43 |   300 | 

Вот SQLFiddle демо Это для SQL Server, но должна хорошо работать в MS Accesss.

+0

Я пробовал, но я получаю ошибку. :( http://postimg.org/image/q4671b7oz/ – Chaler

+0

Это 'AS' перед псевдонимом, который дает ошибку. MS Access не любит псевдонимы столбцов без' AS' в отличие от MySQL или SQL Server. Он должен быть ' AS year_quantity'. См. Обновленный ответ. Он был протестирован и отлично работает. – peterm

+0

Он отлично работает. Спасибо, очень много. У меня есть дополнительный вопрос к этой таблице, я могу спросить здесь, я должен добавить еще один? Я хотел бы добавить 5-й ряд для отслеживания изменений в 3-й строке. В 5-й строке я хотел бы иметь сверху вниз РАЗЛИЧИЕ | 23 | -2 (23-25) | -10 (25-35) | 23 (35- 12) | 34 | 34-65 | 65-43 все это основано на идентификаторе и дате. Танки для всей вашей помощи я реально оценил. – Chaler

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