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 Server 2005 视图

Sql Server 2005 COUNT 视图耗时太长

Sql Query 列出 SQL Server 2005 数据库中的所有视图

如何使用 SQL Server 2005 创建基于 SQL 语句集的视图?

SQL Server 2005 嵌套视图 - 解除纠缠的策略? [关闭]

SQL Server 2005 搜索某些数据库对象的视图