2017-02-23 51 views
0

当我执行查询时会抛出错误CERATE VIEW必须是批处理中唯一的语句如何在SQL Server中在我的方案中创建VIEW?

这里是我的查询

select ID,StoreID,TotalQtyParent into #tempQuantity 
From 
(
    select ID,'1001' StoreID,Sum([TotalQtyParent]) TotalQtyParent 
    FROM [HQMatajer].[dbo].[ItemRelationQty] 
    where StoreID='1001' and TotalQtyParent is not null 
    group by ID 

    Union 

    select ID,'StoreAll' StoreID,sum([TotalQtyParent]) TotalQtyParent 
    FROM [HQMatajer].[dbo].[ItemRelationQty] 
    where StoreID<>'1001' and TotalQtyParent is not null 
    group by ID 
) totalquantity 

SELECT 
     ID, 
     [1001] AS WHS, 
     [StoreAll] AS Store 
into #singleRow 
FROM 
(
     SELECT 
      ID, StoreID, TotalQtyParent 
     FROM #tempQuantity 
) AS TotalQty 
PIVOT 
(
     SUM(TotalQtyParent) 
     FOR StoreID IN ([1001], [StoreAll]) 
) AS PivotTable 
order by ID 

BEGIN 
CREATE VIEW vwSummaryWHS AS  //Here is my VIEW 
SELECT 
    item.ItemLookupCode,item.Description,WHS,Store,item9days.QtySold NineDays,item30days.QtySold ThirtyDays 
FROM 
    #singleRow sr 
LEFT JOIN HQMatajer.dbo.Item item on item.id=sr.ID 
LEFT JOIN 
(
    select itemid,sum(qtysold) [QtySold] 
    from [HQMatajer].[dbo].[JC_ItemDSP10days] 
    group by ItemID 
) item9days on item9days.ItemID = sr.ID 
LEFT JOIN 
(
     select itemid,sum(qtysold) [QtySold] 
    from [HQMatajer].[dbo].[JC_ItemDSP30Days] 
    group by ItemID 
)item30days on item30days.ItemID = sr.ID 

END 

drop table #tempQuantity 
drop table #singleRow 

我试图创建在查询开始的一个视图中。但它显示了同样的错误之前一样,你的CREATE VIEW语句之后

回答

1

视图或函数不允许在临时表。以'#'开头的表名称表示临时表。

+0

是的。我知道了。刚才我看到了这个错误 –

0

认沽GO声明:

SELECT * 
INTO <table> 
FROM #singleRow 

GO 

CREATE VIEW vwSummaryWHS AS  //Here is my VIEW 
SELECT 
    item.ItemLookupCode,item.Description,WHS,Store,item9days.QtySold NineDays,item30days.QtySold ThirtyDays 
FROM 
    <table> sr 
LEFT JOIN HQMatajer.dbo.Item item on item.id=sr.ID 
LEFT JOIN 
(
    select itemid,sum(qtysold) [QtySold] 
    from [HQMatajer].[dbo].[JC_ItemDSP10days] 
    group by ItemID 
) item9days on item9days.ItemID = sr.ID 
    LEFT JOIN 
(
     select itemid,sum(qtysold) [QtySold] 
    from [HQMatajer].[dbo].[JC_ItemDSP30Days] 
    group by ItemID 
)item30days on item30days.ItemID = sr.ID 


GO 
+0

没有。同样的错误。我试过 –

+0

请删除BEGIN和END。另外:您的视图在另一个作用域中不起作用,临时表仅在此作用域中可见。 – RoundFour

+0

我认为临时表永远不会在视图内执行。 –