在SQL中选择多个日期[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我有一个数据 table 如下:

 id    date1      date2        rate
 1     01/01/2017 03/01/2017   0.60
 1     02/01/2017 03/01/2017   0.40
 1     03/01/2017 03/01/2017   0.00
 1     04/01/2017 03/01/2017   0.00
 1     05/01/2017 03/01/2017   0.00
 2         .          .          .

对于每个id,我想在它变为0之前为 rate 选择最近的正值。因此,由于 date2 的值是 03/01/3017 ,因此id 1的速率值在 03/01/3017 上变为0。我想选择费率为 0.40 的行。

我想为多个ID做这个。 date2 也不能成为周末。

mysql sql
2个回答
0
投票

我认为这将满足您的要求:

SELECT    a.*
FROM      data_table a
          INNER JOIN
(
    SELECT id
         , MIN(date1) AS date1
    FROM   data_table
    WHERE  rate > 0
    GROUP BY id
) b ON a.id = b.id
       AND a.date1 = b.date1;

0
投票

这是一种方法。我把表名称为table1

SELECT a.id, a.rate
FROM table1 a
WHERE a.date1 = (SELECT MAX(date1) FROM table1 WHERE a.id = id and rate <> 0)

table1包括您提供的数据和由id = 2提供的2行数据。

数据

CREATE TABLE table1 (id INT, date1 DATE, date2 DATE, rate FLOAT);
INSERT table1(id, date1, date2, rate) VALUES
(1,'2017-01-01','2017-03-01',0.60),
(1,'2017-02-01','2017-03-01',0.40),
(1,'2017-03-01','2017-03-01',0.00),
(1,'2017-04-01','2017-03-01',0.00),
(1,'2017-05-01','2017-03-01',0.00),
(2,'2017-06-01','2017-03-01',0.30),
(2,'2017-07-01','2017-03-01',0.00);

结果

id  rate
1   0.4
2   0.3

SQL Fiddle

© www.soinside.com 2019 - 2024. All rights reserved.