【发布时间】:2020-04-09 18:25:49
【问题描述】:
我们已经开始为一堆表格保存每日变化数据。我们首先将所有原始数据和更改数据放入每个表记录的开始和结束日期(因此并非所有记录每天都保存只是更改的记录)。因此,要提取特定日期的数据,我必须查看开始日期和结束日期(结束日期可能为空)并提取 MAX 开始日期以获取正确的记录。
SELECT *
FROM dbo.DIM_EX_NAME_MASTER AS DEXNM
INNER JOIN
(SELECT APPID, MAX(DW_RECORD_START) AS StartDate
FROM dbo.DIM_EX_NAME_MASTER
WHERE (DW_RECORD_START < '4/4/2020') AND (DW_RECORD_END > '4/4/2020')
OR (DW_RECORD_START < '4/4/2020') AND (DW_RECORD_END IS NULL)
GROUP BY APPID) AS INNER_DEXNM ON DEXNM.APPID = INNER_DEXNM.APPID AND DEXNM.DW_RECORD_START = INNER_DEXNM.StartDate
所以这对于一个表来说还不错,但我们希望构建一个带有查询的报告,该查询从 25 个表中提取,其中包含用户选择要提取的日期的子查询。
这将是一些非常混乱的 sql。理想情况下,我想为每个表创建一个视图并将日期作为参数传递,但 SQL Server 不允许参数化视图。
任何人对如何在不为每个表添加所有这些额外 sql 的情况下构建基于多表日期的查询有任何想法?
感谢您提供的任何帮助!
【问题讨论】:
-
它应该更详细,因为它们分为 25 个表.. 这样做是出于什么原因,我们还必须考虑到它们处理的信息量
标签: sql sql-server