2015-12-23 51 views
2

我试图创建以下视图,查询运行查找,直到我尝试创建一个视图,然后我得到一个错误,其中指出:创建视图或函数失败,因为没有列名称被指定为列1,我发现的研究并没有真正的帮助,因为它通常是查询的一些简单的错误,但我现在自己运行良好。任何见解?试图创建视图时使用WITH

CREATE VIEW dbo.prov_prod_rv AS 

WITH rep_prods AS (SELECT t.amount, t.provider_id, t.clinic, p.period_start, t.impacts, 
p.period_end, p.period_id, p.fiscal_year, p.date_man 
FROM dbo.transactions AS t 
CROSS JOIN dbo.period AS p 
WHERE (t.date_entered BETWEEN p.period_start AND p.period_end)) 

SELECT SUM(r.amount), r.provider_id, d.first_name, d.last_name, d.position_id, d.clinic, r.period_id, r.fiscal_year, r.date_man 
FROM rep_prods AS r INNER JOIN 
dbo.provider AS d ON r.provider_id = d.provider_id AND r.clinic = d.clinic 
WHERE (r.impacts = 'P') AND (r.amount <> 0) 
GROUP BY r.provider_id, d.first_name, d.last_name, d.position_id, d.clinic, r.period_id, r.fiscal_year, r.date_man 

回答

5

的问题是您的最终SELECT

SELECT SUM(r.amount), 
     r.provider_id, 
     d.first_name, 
     d.last_name, 
     d.position_id, 
     d.clinic, 
     r.period_id, 
     r.fiscal_year, 
     r.date_man 

你需要给列名于SUM(r.amount)列:

SELECT SUM(r.amount) As TotalAmount, 
     r.provider_id, 
     d.first_name, 
     d.last_name, 
     d.position_id, 
     d.clinic, 
     r.period_id, 
     r.fiscal_year, 
     r.date_man 
+2

真棒,这没有把戏。我错过了,感谢您的快速回答 –

+0

@OMAsphyxiate错误更容易找到查询格式化的地方;-) –

2

塔1 SUM(r.amount)。它没有名称(或别名)。只是将此作为查询运行并不是问题,因为SSMS不需要列名称,但在视图中必须具有列名称。给它一个别名,如SUM(r.amount) AS TotalAmount