SQL Server 2005 视图
Posted
技术标签:
【中文标题】SQL Server 2005 视图【英文标题】:SQL Server 2005 Views 【发布时间】:2010-09-22 20:07:21 【问题描述】:我有一个表,其中包含每个员工的多条记录,按有效数据和有效顺序排列:EMPLID、EFFDT、EFFSEQ。
我正在尝试提出一个视图,在该视图中,我可以指定除当前日期之外的截止日期,并获取每个员工截至该日期的最新记录。我通常使用的查询是:
SELECT C.EMPLID, C.EFFDT, C.EFFSEQ
FROM PS_JOB C
WHERE C.EFFSEQ = (SELECT MAX(INNERALIAS.EFFSEQ)
FROM PS_JOB INNERALIAS
WHERE INNERALIAS.EMPLID = C.EMPLID
AND INNERALIAS.EFFDT = C.EFFDT)
AND C.EFFDT = (SELECT MAX(INNERALIAS.EFFDT)
FROM PS_JOB INNERALIAS
WHERE INNERALIAS.EMPLID = C.EMPLID
AND INNERALIAS.EFFDT <= GetDate())
有没有什么方法可以在 SQL Server 上创建一个视图,我可以在其中指定一个日期以将 INNERALIAS.EFFDT
与第二个子选择中的INNERALIAS.EFFDT
进行比较?
【问题讨论】:
您似乎在寻找参数化视图。这就是所谓的表值函数。 您是否有理由需要视图而不是存储过程或@table 函数? 是的。我能够创建 sp 和/或函数,但我的挑战是使用此信息创建基于 Excel 的报告。当我尝试在我的 Excel 报告中包含子选择时,它们的 GUI 不能再用于编辑(参数、修改等)。我正在尝试创建一个视图(或其他方式)来绕过它。 听起来 Excel 可能不适合您。根据您使用的 SQL Server 版本,您可能需要探索 SQL Server Reporting Services。 【参考方案1】:您不能对视图进行参数化,但可以将视图保持原样并参数化从受参数限制的视图返回结果的 sp,并将 sp 的输出发送到表并在 Excel 中使用该表。
【讨论】:
是否有让用户通过 Excel(或其他一些用户友好的方式)执行 sp? 我认为您需要的不仅仅是 Excel。也许是 Access 前端?以上是关于SQL Server 2005 视图的主要内容,如果未能解决你的问题,请参考以下文章
Sql Query 列出 SQL Server 2005 数据库中的所有视图
如何使用 SQL Server 2005 创建基于 SQL 语句集的视图?