我想创建一个视图来连接2个表,并在各个表中添加条件。
table 1:
id wonum datetime type
---|-----|------------|--------|
1 | 10 | 04/03/2009 | pm |
2 | 11 | 04/03/2009 | cm |
3 | 12 | 04/03/2009 | pm |
4 | 13 | 01/01/2009 | pm |
table 2:
wonum asset
-------|-------|
10 | A1 |
10 | A2 |
11 | A1 |
12 | A1 |
12 | A2 |
12 | A3 |
13 | A1 |
我想创建一个视图,将table2,资产字段分组,并在table1中找到最新日期,并在相应字段中显示最新日期。
目前,我可以使用以下SQL检索分组和最新日期的记录,但无法检索table1上的相应数据,例如type和wonum:
select asset1,max(datetime)from (
select b.asset as asset1, a.datetime as datetime from table1 a, table2 b
where a.wonum = b.wonum )
group by asset11
目前我正在使用IBM db2来创建视图。请提出建议。非常感谢提前。
此致
答案 0 :(得分:0)
您可以通过删除子查询来简化查询:
select b.asset, max(a.datetime)
from table1 a join
table2 b
on a.wonum = b.wonum
group by b.asset;
相反,您可以使用row_number()
函数:
select ab.*
from (select b.asset, a.*
row_number() over (partition by b.asset order by a.datetime desc) as seqnum
from table1 a join
table2 b
on a.wonum = b.wonum
) ab
where seqnum = 1;
我不确定你想要哪个字段,但你应该能够得到你需要的任何字段。
答案 1 :(得分:0)
如何简化查询,在select和group中添加必填字段:
SELECT b.asset as asset1, a.type, a.wonum, max(a.datetime)
FROM table1 a, table2 b
WHERE a.wonum = b.wonum
GROUP BY b.asset, a.type, a.wonum