簡體   English   中英

SQL交叉聯接可在沒有分組依據的case語句中使用最大值進行計算

[英]SQL Cross join to use max value for calculation in a case statement without group by

我有下表:

|BoreholeID|Mins|
-----------------
|BH1       |0.5 |
|BH1       |1   |
|BH1       |1.5 |

我想選擇一個稱為時間軸的第三列,該列具有一個case語句,如果mins值大於最大mins值的80%,並且mins值大於max mins值減5,則返回1。有以下查詢來執行此操作:

select boreholeid, mins,
(case when mins < (max(max_query.maxts)*0.8) and
mins<(max(max_query.maxts)-5) then 1 else 0 end) as Timeline
from maxrawcalcs
cross join
(select max(maxrawcalcs.mins) maxts from maxrawcalcs) as max_query  
;

我過去使用過交叉聯接來使用這樣的最大值,但沒有問題,但是此查詢告訴我,我需要對其他兩個我不想做的選定字段使用按組查詢。 如何使用分組方式?

我使用了嵌套的SQL,並將您的邏輯保留如下:

select q.boreholeid, q.mins,
      (case when q.mins > ((q.maxts)*0.8) and
                 q.mins > ((q.maxts)-5) 
       then 1 else 0 
       end )         as Timeline
  from
(
select boreholeid, mins, 
       (select max(mins) maxts from maxrawcalcs) as maxts
  from maxrawcalcs
) q;

boreholeid  mins    Timeline
     BH1     0.5        0
     BH1      1         0
     BH1     1.5        1

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM