我在這個格式寫了一個查詢..工作在SQL Server 2008中視圖
Select * INTO #xyz FROM()
這是我後來想用它來創建一個視圖,如...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM()
但出現以下錯誤:
- 關鍵字'INTO'附近的語法不正確。
- 視圖或函數不允許在臨時表
是否有人可以提出一個解決辦法呢?是否可以使用臨時表來創建視圖?
我在這個格式寫了一個查詢..工作在SQL Server 2008中視圖
Select * INTO #xyz FROM()
這是我後來想用它來創建一個視圖,如...
CREATE VIEW aaa
AS
Select * INTO #xyz FROM()
但出現以下錯誤:
是否有人可以提出一個解決辦法呢?是否可以使用臨時表來創建視圖?
你肯定不能在視圖中使用SELECT INTO。而且一張表頭也不合格。相反,請使用等效於臨時表的派生表。例如:
假設你有:
select t1.id, t2.field1 into #temp from table1 t1
join Table2 t2 on t1.id = t2.id
where t2.somefield2 = 'mytest'
select t1.id, t2.field1, t1.field1
from mytable2 t1
join #Temp t2 on t1.id = t2.id
where t2.somefield = 'test'
那麼你可以使用:
select t1.id, t2.field1, t1.field1
from mytable2 t1
join (select t1.id, t2.field1
from table1 t1
join Table2 t2 on t1.id = t2.id
where t2.somefield2 = 'mytest') t2
on t1.id = t2.id
where t2.somefield = 'test'
你也可以USEA的CTE
正如錯誤消息表明它不可能使用臨時表。
您應該使用永久表或CTE,它也可以在視圖中指定。
CTE可以幫助你取決於你的情況。如果在研究什麼是CTE後認爲它適合,請在某種情況下描述您的問題。簡而言之,CTE是一個可以多次引用的查詢,在過去,人們使用臨時表來進行查詢。
http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx
什麼是您的最終目標是什麼?你想用臨時表做什麼? – squillman
你不能。視圖是單個聲明活動。您可以使用「CTE」來幫助保持代碼可讀性。 – Praveen