我得到了这个查询,用以前的非空行中的值填充空单元格,但它花了很长时间(几乎有 100.000 条记录)。
希望你能帮助我更快地查询来实现这一目标。
这些都是带有示例数据的 dll:
CREATE TABLE #TEST_INSURANCE_PAYMENTS(
id_num int IDENTITY(1,1),[Provider] varchar(59), [Location] varchar(104),last_update datetime2, [Total_Charge] money
);
INSERT INTO #TEST_INSURANCE_PAYMENTS
([Provider], [Location],[last_update],[Total_Charge])
VALUES
('Vimalkumar Veerappan', 'Arizona Heart Specialists',CURRENT_TIMESTAMP,100.0),
(' ', 'Banner Boswell Medical Center - Inpatient',CURRENT_TIMESTAMP,102.0),
(' ', 'Arizona Heart Specialists WEST',CURRENT_TIMESTAMP,800.0),
('Akash Makkar', 'Arizona Heart Specialists WEST',CURRENT_TIMESTAMP,500.0),
(' ', 'Pinnacle Vein & Vascular Center Sun City',CURRENT_TIMESTAMP,500.0),
(' ', 'Abrazo Arizona Heart Hospital - Outpatient',CURRENT_TIMESTAMP,60.0),
(' ', 'Banner Boswell Medical Center - Inpatient',CURRENT_TIMESTAMP,60.0),
(' ', 'Banner Del E Webb Medical Center - Inpatient',CURRENT_TIMESTAMP,10.0)
select id_num,[Provider],[Location],[Total_Charge],[last_update]
from #TEST_INSURANCE_PAYMENTS where IsNull([Provider], '') <> ''
union
select y.id_num, x.[Provider], y.[Location],y.[Total_Charge],y.[last_update]
from #TEST_INSURANCE_PAYMENTS as x
join(
select t1.id_num,max(t2.id_num) as MaxID, t1.[Location],t1.[Total_Charge],t1.[last_update]
from (select * from #TEST_INSURANCE_PAYMENTS where IsNull([Provider], '') = '') as t1
join (select * from #TEST_INSURANCE_PAYMENTS where IsNull([Provider], '') <> '') as t2 on t1.id_num > t2.id_num
group by t1.id_num, t1.[Location],t1.[Total_Charge],t1.[last_update]
)as y on x.id_num = y.MaxID order by id_num;
如果没有计划,我们将无法判断正在发生什么(正如戴尔所建议的那样)。 同时,也许这会好一点:
SELECT x.id_num, COALESCE(NULLIF(x.Provider,' '),y.provider) AS [Provider], x.Location, x.last_update, x.Total_Charge
FROM @TEST_INSURANCE_PAYMENTS x
OUTER APPLY (SELECT MAX(id_num) AS mid_num FROM @TEST_INSURANCE_PAYMENTS y WHERE y.id_num < x.id_num AND y.[Provider] IS NOT NULL AND y.Provider <> ' ' AND x.Provider = '') a
LEFT OUTER JOIN @TEST_INSURANCE_PAYMENTS y
ON a.mid_num = y.id_num;
id_num | 提供商 | 地点 | 最后更新 | 总费用 |
---|---|---|---|---|
1 | 维马尔库马尔·维拉潘 | 亚利桑那州心脏专家 | 2023-10-04 15:55:59.6833333 | 100.00 |
2 | 维马尔库马尔·维拉潘 | 班纳博斯韦尔医疗中心 - 住院部 | 2023-10-04 15:55:59.6833333 | 102.00 |
3 | 维马尔库马尔·维拉潘 | 亚利桑那州西部心脏专家 | 2023-10-04 15:55:59.6833333 | 800.00 |
4 | 阿卡什·马卡 | 亚利桑那州西部心脏专家 | 2023-10-04 15:55:59.6833333 | 500.00 |
5 | 阿卡什·马卡 | Pinnacle 静脉和血管中心太阳城 | 2023-10-04 15:55:59.6833333 | 500.00 |
6 | 阿卡什·马卡 | 亚利桑那州阿布拉索心脏病医院 - 门诊 | 2023-10-04 15:55:59.6833333 | 60.00 |
7 | 阿卡什·马卡 | 班纳博斯韦尔医疗中心 - 住院部 | 2023-10-04 15:55:59.6833333 | 60.00 |
8 | 阿卡什·马卡 | Banner Del E Webb 医疗中心 - 住院病人 | 2023-10-04 15:55:59.6833333 | 10.00 |