5

这个问题以前问过几次,不幸的是我没有得到我的问题的答案。

好吧,我有两个 SQL ( SQL SERVER 2008 ) 表,Employee 和 Employee expens,其中 Employee Id 分别是主键和外键。

员工表列,1. 员工 ID(P 键) 2. 经理 3. 位置 4. 加入日期 5. 姓名

Employee Expense 表列,1. Expense Id (P Key) 2. Employee Id (F key) 3. Expense Type 4. Expense Amount 5. Expense Date。

问题是,我想创建一个要在 SharePoint Web 部件中使用的视图,我将在其中查询两个表,所以我的要求是使用以下列创建一个视图,

从 Employee 我需要Employee Id 和 Name。从员工费用中,我需要费用类型、费用金额、费用日期

其他要求。

一个。如果我在员工费用表中有多个员工条目,那么视图中应该有很多行

湾。即使我在 Employee Expense 表中没有条目,那么我也应该在视图中获取该特定 Employee 的行,而 Employee Expense 表列的值为 null。

请帮我继续...

编辑按照 Stack Overflow 成员的指示添加所需的视图代码!

CREATE VIEW ExpenseView AS (
    SELECT [Employee Expense].[Employee ID], Employee.[First Name], [Employee Expense].[Expense Type],[Employee Expense].[Expense Amount],[Employee Expense].[Expense Date]
            FROM Employee,[Employee Expense]
        WHERE [Employee Expense].[Employee ID] = Employee.[Employee ID])

请帮忙。

4

3 回答 3

16

如果要从 SP 中创建视图,则需要使用动态 SQL。

像这样的东西。

create procedure ProcToCreateView 
as
exec ('create view MyView as select 1 as Col')

create view...代码必须作为字符串参数发送到,exec从外观上看,您已经拥有视图所需的代码,因此只需将其嵌入到'.

我真的不知道你为什么需要那个。也许您只需要知道如何使用来自 SP 的视图

create procedure ProcToUseView
as
select Col
from MyView
于 2011-10-10T13:57:13.683 回答
5

我在我的 SQL 数据库中使用以下动态 SQL 代码来创建带有存储过程的视图。它工作正常:

    CREATE PROCEDURE uspCreateView
    AS
    EXEC ('

    CREATE VIEW vwDataLayoutFileAssignment
    AS

    SELECT b.FileID, d.FieldID
    FROM [File] b, DataLayoutFileAssignment c, [Field] d
    WHERE b.DriverFileID = c.FileID
    AND C.DataLayoutID = d.DataLayoutID
    ')
于 2012-02-25T05:47:14.447 回答
1

使用 MS BOL 中的联接

关闭页面

但是,外部连接条件与 WHERE 子句搜索条件的交互可能不同,具体取决于连接条件是在 FROM 还是 WHERE 子句中。因此,不建议在 WHERE 子句中指定 Transact-SQL 外连接的功能,不再记录,并将在未来的版本中删除。

这样你的代码就变成了:

CREATE VIEW ExpenseView AS
BEGIN
   SELECT [Employee Expense].[Employee ID], Employee.[First Name], [Employee Expense].[Expense Type],[Employee Expense].[Expense Amount],[Employee Expense].[Expense Date]
   FROM Employee
   LEFT OUTER JOIN [Employee Expense]
   ON [Employee Expense].[Employee ID] = Employee.[Employee ID]
END
于 2011-10-10T13:22:18.023 回答