【发布时间】:2014-10-12 05:17:25
【问题描述】:
我有两张桌子:
表1:文章
Article_ID Price Valid from Price ID
1 12-Aug-2014 1
1 30-Dec-2014 2
1 10-Oct-2014 3
1 15-Oct-2014 5
2 13-Aug-2014 1
---(n no. of records for article 2)
3 01-July-2014 4
3 02-July-2014 5
---(n no. of records for article 3)
这里的唯一键是 Article_Id 和 Valid from date。
意味着每篇文章都有不同的价格,从特定日期开始有效。一篇文章不能在同一个有效期内有不同的价格。
表 2:价格
Price ID Price
1 10
2 200
3 30
4 400
5 50
要求的结果:
我希望每篇文章至少三个价格。为此,我需要加入,但我无法弄清楚如何限制否。每篇文章的行数价格为 3,以及如何实现最小值。标准。
最终结果应该是:
Article_ID Min Price1 Min Price2 Min Price3
1 10 30 50
2 10
3 50 400
一篇文章将有最大值。在三个价格中(在最终结果中),minimun 可能为 0。它拥有的三个价格是表 2 中商品的最低价格。
我知道它必须与 min 做一些事情。 (分组依据)和行号。 (在表 2 中加入),但任何人都可以帮我实现它吗?
问候 SJ
【问题讨论】:
-
向我们展示您的尝试
-
select a.article_id, min(p.price) from article a left outer join price p on (p.price_id = a.price_id) group by(a.article_id ) order by a.article_id;
-
这里的问题是,我不知道如何将行数设置为 3(如果是联合),除此之外它没有考虑空价格
-
@CodeNewbie :实际上这对我也没有帮助,我刚刚意识到所需的输出是非常不同的。(更新了问题。)仍在试图找出我的出路..让我知道如果你有一些想法。谢谢!