我有两个表格table1
和详细table2
Table1
结构
table1_id integer,
description varchar(50)
Table2
结构
table2_id integer,
table1_id integer,
price numeric(7,2),
Price_date date
我需要编写SQL或在这两个表之间建立链接的视图,但是我想从table2
获取的问题只是为了获取单个值,该值是price
字段中最近的一个使用要与price_date
关联的table1
字段,换句话说,我不想从Table2.table1_id
字段获取任何重复项。我应该怎么写那个SQL?
答案 0 :(得分:1)
我假设您希望从表中获取每个table1_id
的所有最新条目,而不仅仅是最新条目(这更简单)。
如果你想要最新的table1_id
,你首先需要选择每个id的最新记录,然后查询记录的其余部分,如下所示:
WITH latestprice (
SELECT table1_id, MAX(price_date) AS price_date
FROM table2
GROUP BY table1_id
)
SELECT t2.table2_id, t2.table1_id, t2.price, t2.price_date
FROM latestprice l
INNER JOIN table2 t2
ON t2.table1_ud = l.table1_id AND t2.price_date = l.price_date
如果您还需要来自table1
的信息,则需要添加额外的加入。请注意,上述查询存在一个缺陷:如果table1_id
的多个条目具有相同的price_date
,则每个table_id
将产生多行和重复。如果您希望强制执行此操作,则需要为table1_id, price_date
添加唯一约束。