sql - 如何使用变量 where 子句创建 SQL View

标签 sql sql-server function view

我有一个包含 37 列的表。该表由每日 csv 文件填充。我需要创建一个仅过滤上个月数据集的 View 。发布日期列是一个格式为 20131219 的字符串变量。我有一个函数,它使用日期函数来确定当前月份,然后返回包含之前年份和月份的字符串。该查询返回我需要的数据集,但我不知道如何创建允许变量和函数调用的 View 。 **参数“2013”​​不执行任何操作。如果没有它,我就无法使该功能正常工作,因此添加了一些东西。

declare @newstring varchar(6)
set @newstring = [dbo].[GetPrevYearMonth]('2013')
select * from dbo.SAE_EDATA_LV
where [GTR-POSTING-DATE] like @newstring+'%'

我知道我可以创建一个具有表返回类型的函数,但这对于列数来说非常乏味。

任何帮助将不胜感激。

最佳答案

将 View 更改为内联表值函数 (iTVF)。无论如何,iTVF 实际上只是一个参数化 View 。

您使用它的方式完全相同,只是您还必须指定参数。

或者,您可以为您的 View 创建 iTVF 包装器:

CREATE FUNCTION dbo.fnSAE_EDATA_LV(@newstring varchar(6))
RETURNS TABLE As
    select * 
    from dbo.SAE_EDATA_LV
    where [GTR-POSTING-DATE] like @newstring+'%'

您还应该知道,可以将长列列表从 SSMS 资源管理器 Pane 上的表/ View /表值函数的图标/列文件夹中拖放到 SQL session Pane 中。

关于sql - 如何使用变量 where 子句创建 SQL View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100507/

相关文章:

sql-server - 如何在 T-SQL 中获取版本号(varchar)列的 MAX 值

sql-server - 请帮我解决 Error 27506 Error executing SQL script

c++ - 在 C++17 中使用 noexcept 的 std::function

c - 在 C 中的函数中是否必须使用 "return"和 "void"?

sql - 以随机顺序从 JSON 数组中获取元素

php - 如何检索同兴趣用户的状态 Mysql查询问题

mysql - 数据库中是否有用于版本控制的通用选项?

python - 有效的循环方式

sql - Oracle SQL PLS-00049 : bad bind variable

mysql - 每个月每个唯一 ID 的累计总和