Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर - अतिव्यापी डेटा पर संचयी योग - उस तिथि को प्राप्त करना जो योग किसी दिए गए मान तक पहुँचता है

SQL Fiddle यहां देखें .

with tbl as (
  -- this will generate daily merged ovelaping time
  select distinct
    a.id
    ,(
        select min(x.starttime) 
        from act x 
        where x.id=a.id and ( x.starttime between a.starttime and a.endtime
          or a.starttime between x.starttime and x.endtime )
    ) start1
    ,(
        select max(x.endtime) 
        from act x 
        where x.id=a.id and ( x.endtime between a.starttime and a.endtime
          or a.endtime between x.starttime and x.endtime )
    ) end1
  from act a

), tbl2 as 
(
  -- this will add minute and total minute column
  select 
    * 
    ,datediff(mi,t.start1,t.end1) mi
    ,(select sum(datediff(mi,x.start1,x.end1)) from tbl x where x.id=t.id and x.end1<=t.end1) totalmi
  from tbl t
), tbl3 as 
(
  -- now final query showing starttime and endtime for 5 hours other wise null in case not completed 5(300 minutes) hours
  select 
    t.id
    ,min(t.start1) starttime
    ,min(case when t.totalmi>300 then t.end1 else null end) endtime
  from tbl2 t
  group by t.id
)
-- final result 
select *
from tbl3
where endtime is not null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर से Genero को जोड़ना

  2. डेटाटाइप एसक्यूएल सर्वर में एक्सेल फाइल को सेव करने के लिए?

  3. टी-एसक्यूएल बिल्ट-इन फ़ंक्शन के साथ सबस्ट्रिंग कैसे प्राप्त करें

  4. मैं कैसे बता सकता हूं कि अब डेटाबेस तालिका का उपयोग किया जा रहा है या नहीं? एक सेलेक्ट ट्रिगर जैसा कुछ चाहते हैं

  5. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में टेम्प्लेट का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 16