获取特定日期范围内的最小和最大日期范围 [英] Get the Min And Max date range with in specific date range
问题描述
有人可以帮我解决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。
你能帮我解决这个问题吗?
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?
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屋!