现在,我为get-specific数据定制查询,从该数据中我想获取前一行数据
我尝试了这个查询,但是它出错了
SELECT Data_date -(SELECT * FROM [x].[dbo].[JSON_SOURCE] WHERE Data_date <= (SELECT TOP(1) Data_Date
FROM [x].[dbo].[JSON_SOURCE]
where ([Actual_cumulative] != null OR LTRIM(RTRIM([Actual_cumulative])) !='')
AND ([Early_Variance_monthly] != null OR LTRIM(RTRIM([Early_Variance_monthly])) !='' )
AND ([Early_Variance_cumulative] != null OR LTRIM(RTRIM([Early_Variance_cumulative])) !='' )
AND ([Late_Variance_monthly] != null OR LTRIM(RTRIM([Late_Variance_monthly])) !='' )
AND ([Late_Variance_cumulative] != null OR LTRIM(RTRIM([Late_Variance_cumulative])) !='' )
AND lower([Slug_Type]) IN('lg') ORDER BY Data_Date DESC) AND lower([Slug_Type]) IN('lg'))FROM [x].[dbo].[JSON_SOURCE]
这个查询是选择我想要的数据,从这个查询结果中我想要取以前的数据是不是可行?
SELECT * FROM [x].[dbo].[JSON_SOURCE] WHERE Data_date <= (SELECT TOP(1) Data_Date
FROM [x].[dbo].[JSON_SOURCE]
where ([Actual_cumulative] != null OR LTRIM(RTRIM([Actual_cumulative])) !='')
AND ([Early_Variance_monthly] != null OR LTRIM(RTRIM([Early_Variance_monthly])) !='' )
AND ([Early_Variance_cumulative] != null OR LTRIM(RTRIM([Early_Variance_cumulative])) !='' )
AND ([Late_Variance_monthly] != null OR LTRIM(RTRIM([Late_Variance_monthly])) !='' )
AND ([Late_Variance_cumulative] != null OR LTRIM(RTRIM([Late_Variance_cumulative])) !='' )
AND lower([Slug_Type]) IN('lg') ORDER BY Data_Date DESC) AND lower([Slug_Type]) IN('lg')
1条答案
按热度按时间lfapxunr1#
因此,您希望将表连接到自身,并在表中选择一个相关行,以便与原始数据放在一起。
要做到这一点,您可以对查询进行排序和分区,以便在每个记录旁边放置一些符合where子句的相关记录,然后使用分区的顺序知道要选择哪一行。
我引入isnull来消除where中的一些复杂性。
要了解这是如何实现的,您可能需要更改一些顺序或>==运算符。