选择分钟 具有JOIN的另一个表中记录的三个值

我有两个表:

表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和有效起始日期。

这意味着每件商品的价格都不同,从某些日期起有效。有效期自同一日期起,商品不能有不同的价格。

表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

一篇文章的最高 在三个价格中(最终结果),最小值可能为0。而三个价格是表2中商品的最小价格。

我知道它必须与分钟做些事情。(分组依据)和行号 (带有表2的联接),但是有人可以帮助我实现它吗?

关于SJ

Used_By_Already

如果需求遗体的3种价格在一系列枢轴,然后使用ROW_NUMBER()将使给这些数字1,2,3,从那里是一个简单的使用case expressionsgroup by

3个最低价格:

SELECT
      a.article_id
    , MAX(CASE
            WHEN a.price_seq = 1 THEN p.price END) AS price_1
    , MAX(CASE
            WHEN a.price_seq = 2 THEN p.price END) AS price_2
    , MAX(CASE
            WHEN a.price_seq = 3 THEN p.price END) AS price_3
FROM (
            SELECT
                  article_id
                , price_valid_from
                , price_id
                , ROW_NUMBER() OVER (PARTITION BY article_id
                                     ORDER BY p.price ASC) AS price_seq
            FROM article
                  LEFT OUTER JOIN price p
                              ON (a.price_id = p.price_id)
      ) a
GROUP BY
      a.article_id
ORDER BY
      a.article_id

3最近价格

SELECT
      a.article_id
    , MAX(CASE
            WHEN a.price_seq = 1 THEN p.price END) AS price_1
    , MAX(CASE
            WHEN a.price_seq = 2 THEN p.price END) AS price_2
    , MAX(CASE
            WHEN a.price_seq = 3 THEN p.price END) AS price_3
FROM (
            SELECT
                  article_id
                , price_valid_from
                , price_id
                , ROW_NUMBER() OVER (PARTITION BY article_id
                                     ORDER BY price_valid_from DESC) AS price_seq
            FROM article
      ) a
      LEFT OUTER JOIN price p
                  ON (a.price_id = p.price_id)
GROUP BY
      (a.article_id)
ORDER BY
      a.article_id

Demo SQLfiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询以选择必须具有另一个表中的所有值作为子字符串的记录

来自分类Dev

从一个表中选择所有记录并从另一个表中匹配记录

来自分类Dev

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

来自分类Dev

选择具有第一个条件的第三个表 [SQL]

来自分类Dev

从具有一个公共 ID 的三个表中选择

来自分类Dev

如何选择在另一个表中具有全部或没有对应值的行?

来自分类Dev

从一个表中选择记录,而另一个表中没有两列

来自分类Dev

如何从一个表中选择另一个表中没有外键的记录

来自分类Dev

从三个表之一中选择一个值

来自分类Dev

从另一个表中选择具有总和值的查询

来自分类Dev

SQLite查询选择另一个表中不存在的所有记录

来自分类Dev

如何使用JOIN从另一个表中选择一个值

来自分类Dev

如何选择一个表中存在但另一个表中没有的值?

来自分类Dev

MySql根据另一个表中的MAX值选择一个表中的所有行

来自分类Dev

如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

来自分类Dev

SQL有效地选择值,该值在另一个表中有记录

来自分类Dev

如何从表中选择数据,在该表中我需要返回在一个字段中具有重复值而在另一个字段中具有指定值的行?

来自分类Dev

选择另一个表中的所有数据,即使另一个表中的相应值为NULL

来自分类Dev

在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

来自分类Dev

选择仅与另一个表中的记录关联的记录

来自分类Dev

根据另一个表中的条件选择表中的记录?

来自分类Dev

选择表中每分钟的第一个值

来自分类Dev

oracle SQL:选择不同的值,其中它的所有记录中不包含另一个特定值

来自分类Dev

如何从具有以下关系的三个表中选择所有记录

来自分类Dev

SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

来自分类Dev

SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

来自分类Dev

MySQL从具有多个记录的多个表中从最高联接值中选择一个记录

来自分类Dev

SQL-从另一个表中选择两次具有不同值的列

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

Related 相关文章

  1. 1

    SQL查询以选择必须具有另一个表中的所有值作为子字符串的记录

  2. 2

    从一个表中选择所有记录并从另一个表中匹配记录

  3. 3

    从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

  4. 4

    选择具有第一个条件的第三个表 [SQL]

  5. 5

    从具有一个公共 ID 的三个表中选择

  6. 6

    如何选择在另一个表中具有全部或没有对应值的行?

  7. 7

    从一个表中选择记录,而另一个表中没有两列

  8. 8

    如何从一个表中选择另一个表中没有外键的记录

  9. 9

    从三个表之一中选择一个值

  10. 10

    从另一个表中选择具有总和值的查询

  11. 11

    SQLite查询选择另一个表中不存在的所有记录

  12. 12

    如何使用JOIN从另一个表中选择一个值

  13. 13

    如何选择一个表中存在但另一个表中没有的值?

  14. 14

    MySql根据另一个表中的MAX值选择一个表中的所有行

  15. 15

    如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

  16. 16

    SQL有效地选择值,该值在另一个表中有记录

  17. 17

    如何从表中选择数据,在该表中我需要返回在一个字段中具有重复值而在另一个字段中具有指定值的行?

  18. 18

    选择另一个表中的所有数据,即使另一个表中的相应值为NULL

  19. 19

    在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

  20. 20

    选择仅与另一个表中的记录关联的记录

  21. 21

    根据另一个表中的条件选择表中的记录?

  22. 22

    选择表中每分钟的第一个值

  23. 23

    oracle SQL:选择不同的值,其中它的所有记录中不包含另一个特定值

  24. 24

    如何从具有以下关系的三个表中选择所有记录

  25. 25

    SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

  26. 26

    SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

  27. 27

    MySQL从具有多个记录的多个表中从最高联接值中选择一个记录

  28. 28

    SQL-从另一个表中选择两次具有不同值的列

  29. 29

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

热门标签

归档