此问题之前已经问过几次,遗憾的是我没有得到我的问题的答案。
我有两个SQL( SQL SERVER 2008 )表,Employee和Employee费用,其中Employee Id分别是主键和外键。
员工表列, 1.员工ID(P键)2。经理3.位置4.加入日期5.姓名
员工费用表列, 1.费用ID(P键)2。员工ID(F键)3。费用类型4.费用金额5.费用日期。
问题是,我想创建一个在SharePoint Web部件中使用的视图,我将在其中查询这两个表,所以我的要求是使用以下列创建视图,
来自员工我需要员工ID和姓名。 从员工费用中我需要费用类型,费用金额,费用日期。
附加要求。
一个。如果我在Employee Expense表中有一个员工的多个条目,那么View中应该有很多行,
湾即使我在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])
请帮忙。
答案 0 :(得分:10)
如果要在SP中创建视图,则需要使用动态SQL。
像这样。
create procedure ProcToCreateView
as
exec ('create view MyView as select 1 as Col')
create view...
代码必须作为字符串参数发送到exec
,并且通过它的外观,您已经拥有视图所需的代码,因此只需将其嵌入{{1}之间}}
我真的不知道你为什么需要它。也许您只需要知道如何使用来自SP的视图
'
答案 1 :(得分:4)
我在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
')
答案 2 :(得分:1)
然而,外部连接条件可能与之不同 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