获取特定日期范围内的最小和最大日期范围 [英] Get the Min And Max date range with in specific date range

查看:73
本文介绍了获取特定日期范围内的最小和最大日期范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


有人可以帮我解决SQL中的以下要求 



一个表包含像 


DECLARE @T TABLE(ID INT,SDATE DATE,EDATE DATE)

INSERT INTO @T

SELECT 1 ,'2019-03-01','2019-03-07'UNION ALL

SELECT 1,'2019-03-02','2019-03-08'UNION ALL

SELECT 1,'2019-03-04','2019-03-09'UNION ALL

SELECT 1,'2019-03-06','2019-03-11' UNION ALL

SELECT 1,'2019-04-1 2','2019-04-23'UNION ALL

SELECT 2,'2019-03-01','2019-03-06'UNION ALL

SELECT 3 ,'2019-05-20','2019-07-01'



我的派生输出为:



id
SDATE       EDATE


1
2019-03-01 2019-03-11


1
2019-04-12  2019-04-23


2
2019-03-01  2019-03-06


3
2019-05-20  2019-07-01



逻辑是我需要在每个id的范围内得出Min和Max。



你能帮我解决这个问题吗?

解决方案

  kartheek
Vasantha


 DECLARE @T TABLE(ID INT,SDATE DATE,EDATE DATE)
INSERT INTO @T
SELECT 1,'2019-03-01','2019-03-07'UNION ALL
SELECT 1,'2019-03-02','2019-03-08'UNION ALL
SELECT 1,'2019-03-04','2019-03-09'UNION ALL
SELECT 1,'2019-03-06','2019-03-11'UNION ALL
SELECT 1,'2019-04-12','2019-04-23'UNION ALL
SELECT 2, '2019-03-01','2019-03-06'UNION ALL
SELECT 3,'2019-05-20','2019-07-01'






选择不同的id,min(sdate)sdate,max(edate)edate(选择id,格式(sdate,'yyyy-MM')dt,SDATE ,EDATE from @t

union all
select id,format(edate,'yyyy-MM'),SDATE,EDATE from @t)as t group by id,dt
按ID排序



希望它可以帮到你。



 



最好的问候,



Natig


Can someone help me on the below requirement in SQL 

A table contains the records like 

DECLARE @T TABLE (ID INT,SDATE DATE,EDATE DATE)
INSERT INTO @T
SELECT 1,'2019-03-01','2019-03-07' UNION ALL
SELECT 1,'2019-03-02','2019-03-08' UNION ALL
SELECT 1,'2019-03-04','2019-03-09' UNION ALL
SELECT 1,'2019-03-06','2019-03-11' UNION ALL
SELECT 1,'2019-04-12','2019-04-23' UNION ALL
SELECT 2,'2019-03-01','2019-03-06' UNION ALL
SELECT 3,'2019-05-20','2019-07-01'

And the Derived output for me is as:

id SDATE          EDATE
1 2019-03-01 2019-03-11
1 2019-04-12 2019-04-23
2 2019-03-01 2019-03-06
3 2019-05-20 2019-07-01

And the logic is I need to derive the Min and Max with in the ranges for each id.

Can you please help me on this?

解决方案

Hi, kartheek Vasantha

DECLARE @T TABLE (ID INT,SDATE DATE,EDATE DATE)
INSERT INTO @T
SELECT 1,'2019-03-01','2019-03-07' UNION ALL
SELECT 1,'2019-03-02','2019-03-08' UNION ALL
SELECT 1,'2019-03-04','2019-03-09' UNION ALL
SELECT 1,'2019-03-06','2019-03-11' UNION ALL
SELECT 1,'2019-04-12','2019-04-23' UNION ALL
SELECT 2,'2019-03-01','2019-03-06' UNION ALL
SELECT 3,'2019-05-20','2019-07-01'




select distinct id,min(sdate) sdate,max(edate) edate from 

(select id,format(sdate,'yyyy-MM') dt,SDATE,EDATE from @t

union all 
select id,format(edate,'yyyy-MM'), SDATE,EDATE from @t)  as t group by id,dt
order by id

Hope it can help you.

 

Best Regards,

Natig


这篇关于获取特定日期范围内的最小和最大日期范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆