SQL将两个表与两个参数组合在一起

时间:2014-01-07 23:20:08

标签: sql ms-access multiple-conditions

我搜索了论坛1小时,没有发现任何类似的内容。

我遇到了这个问题:我想比较两个列ID和DATE,如果它们在两个表中相同,我想将表2中的数字放在它旁边。但如果不一样的话,我想在日期填写年度配额。我在Access工作。

表1

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 

我尝试了加入和阅读论坛,但没有找到解决方案。

1 个答案:

答案 0 :(得分: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 Access中应该可以正常工作。