无循环记录集的SQL子查询
这是一个简单的查询:无循环记录集的SQL子查询,sql,loops,subquery,Sql,Loops,Subquery,这是一个简单的查询: SELECT fDATE, fRAIN FROM tRAIN WHERE (fRAIN >=5) 检索到的查询可能类似于: 现在,我想得到对应于较长雨季的子集,在本例中,日期为10月9日至13日。有没有一种方法可以在不循环记录集的情况下执行此操作 我感谢你的帮助。问候我已经完成了任务,答案发布在 输出如下所示: 关于季节的大小取决于连续天数的计数?预期结果是什么?您的数据库是什么?检查解决方案数据库包含自2004
SELECT fDATE, fRAIN
FROM tRAIN
WHERE (fRAIN >=5)
检索到的查询可能类似于:
现在,我想得到对应于较长雨季的子集,在本例中,日期为10月9日至13日。有没有一种方法可以在不循环记录集的情况下执行此操作
我感谢你的帮助。问候我已经完成了任务,答案发布在 输出如下所示:
关于季节的大小取决于连续天数的计数?预期结果是什么?您的数据库是什么?检查解决方案数据库包含自2004年至今的每日测量值。记录了几个测量站。查询比我在示例中展示的更复杂,但目的是获得更长的时间。我从一开始就不知道包含更长雨季的日期范围。我知道如何循环记录。我只是想知道是否有其他方法可以不用循环。是的,使用rain>=值计算连续天数,并检索更长的系列赛是目标。谢谢何塞·费尔南多·吉拉多·希门内斯8分钟前
WITH Q4 AS (
SELECT Q3.fDate, Q3.RW
FROM
(SELECT
RW=ROW_NUMBER() OVER( PARTITION BY GRP ORDER BY fDate) ,fDate
FROM
(
SELECT
fDate, DATEDIFF(Day, '1900-01-01' , fDate)- ROW_NUMBER() OVER( ORDER BY
fDate ) AS GRP
FROM (SELECT CONVERT(DATE,CONCAT(fYEAR , '/' , fMONTH , '/' ,fDAY),111) AS fDate,
fRAIN
FROM tRain
WHERE (fRain >= _value AND fStation = '_string' AND fYear = _value)
) Q1
) Q2
) Q3
)
SELECT (DATEADD(DAY,-Q4.RW+1,Q4.fDate)) AS Start_Date, Q4.fDate AS
Final_Date, Q4.RW as Season_Length
FROM Q4
WHERE Q4.RW= (SELECT TOP 1 MAX(Q4.RW) FROM Q4)