【问题标题】:Create VIEW with IF STATEMENT (WEEKDAY CASE)使用 IF 语句创建 VIEW(工作日案例)
【发布时间】:2021-03-18 10:36:38
【问题描述】:

我需要在 SQL Server 中创建一个视图,该视图从不同的表中为一周中的每一天返回不同的结果。

可以创建如下视图吗?

例如,如果是星期日,则返回来自Tbl_FRUITS 的行,如果是星期一,则返回来自Tbl_VEGETABLE 的行。

CREATE VIEW TBL_CART
AS
IF (DATEPART(WEEKDAY,GETDATE()) = '1')
    SELECT * FROM Tbl_FRUITS
ELSE IF (DATEPART(WEEKDAY,GETDATE()) = '2')
    SELECT * FROM Tbl_VEGETABLE

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008


    【解决方案1】:

    union all 与您的条件一起用作适当的where 子句。您需要确保从每个不同的表中返回相同的列 - 但无论如何对于视图来说都是正常的。只要您有不同的表,就可以重复联合的天数。

    SELECT *
    FROM Tbl_FRUITS
    WHERE DATEPART(WEEKDAY,GETDATE()) = 1
    UNION ALL
    SELECT *
    FROM Tbl_VEGETABLE
    WHERE DATEPART(WEEKDAY,GETDATE()) = 2;
    

    注意:正如 Gordon Linoff 所说,您不要引用数字(这会使它们成为字符串)。而且您不会将数字与字符串进行比较。

    【讨论】:

    • I 通过一个 VIEW 与其他系统交互。如果我必须每天返回不同的数据,我应该使用 Union ALL 7 次吗?
    • 您不应该将整数与字符串值进行比较。
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多