繁体   English   中英

如何在SQL中按日期范围联接多个价格表?

[英]How to join multiple price tables by date range in SQL?

我是SQL的新手,我需要在匹配日期后追加表的帮助。 我有2表从MySQL生成的股票价格(即Com A,Com B)。

它们如下(不详尽):

Com A
Date                      Price 
2015-05-01 00:00:00.000   34.25
2015-05-02 00:00:00.000   35.20
2015-05-03 00:00:00.000   36.70 
2015-05-04 00:00:00.000   32.37
2015-05-05 00:00:00.000   32.40
2015-05-06 00:00:00.000   32.20  


Com B
Date                      Price 
2015-05-01 00:00:00.000   54.29
2015-05-02 00:00:00.000   54.50
2015-05-04 00:00:00.000   56.21
2015-05-05 00:00:00.000   56.70
2015-05-06 00:00:00.000   58.20 

但是,我想输出以下4列的SQL查询结果(即日期,Com A,Com B,Com A-Com B):

Date                      Com A   Com B  Com A - Com B
2015-05-01 00:00:00.000   34.25   54.29  20.04
2015-05-02 00:00:00.000   35.20   54.50  19.30
2015-05-03 00:00:00.000   36.70   NULL   36.70
2015-05-04 00:00:00.000   32.37   56.21  23.84
2015-05-05 00:00:00.000   32.40   56.70  24.30
2015-05-06 00:00:00.000   32.20   58.20  26.00

请注意,Com A和Com B之间的差是绝对值。

您需要具有ABS功能的标准连接操作以检查绝对值

select a.date,
       IFNULL(a.price, 0) as comA,
       IFNULL(b.price, 0) as comB,
       ABS(a.price - b.price) as ComA_ComB
from com_A a left join com_B b on a.date = b.date 

请注意,您还可以在日期上使用内部联接,这将根据您希望获得的结果返回一些不同的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM