我试图选择日期相同时变化大于15%的行。
这是我要比较的数据库数据的示例。

id      coin        high24hr    low24hr     date
397     BTC_1CR     0.00030000  0.00030000  2016-06-10 08:39:26
525     BTC_LSK     0.00078898  0.00078898  2016-06-10 08:39:26
529     BTC_1CR     0.00030000  0.00030000  2016-06-10 08:48:05
657     BTC_LSK     0.00078884  0.00078884  2016-06-10 08:48:05


所以我想选择具有两次2016-06-10 08:39:26和2016-06-10 08:48:05的任何行。然后,如果两个硬币列的值相同。比较high24hr列值。如果差异大于15%,则返回差异。如果未返回0,则比较low24hr列值。如果差异大于15%,则返回差异。如果不返回0。

输出应类似于以下内容。如果大于15%,则显示百分比变化。

coin        high    low
BTC_1CR     20%     25%
BTC_LSK     30%     0

最佳答案

SQL使用集合操作,因此您通常不会考虑比较2个连续的行。但是,您可以使用以下查询执行类似操作:

declare @percent  float
set @percent = 0.0000000000000000015;

select distinct t.coin,t.date,
    (t1.high24hr-t.high24hr)/100.0 as high,
    (t2.low24hr-t.low24hr)/100.0 as low
    from YourTable t
    left join YourTable t1 on
        t.coin=t1.coin and t.date>t1.date and (t1.high24hr-t.high24hr)/100.0>@percent
    left join YourTable t2 on
        t.coin=t2.coin and t.date>t2.date and (t2.low24hr-t.low24hr)/100.0>@percent

10-06 15:23