尝试使用WITH创建View时出现问题

OM *_*ate 2 sql sql-server

我正在尝试创建以下视图,查询运行查找,直到我尝试创建一个视图,然后我收到一个错误,指出:创建视图或函数失败,因为没有为列1指定列名,研究我发现没有真正帮助,因为它通常是一个简单的查询错误,但我的目前运行正常.任何见解?

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
Run Code Online (Sandbox Code Playgroud)

Siy*_*ual 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
Run Code Online (Sandbox Code Playgroud)

您需要为列指定列名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
Run Code Online (Sandbox Code Playgroud)

  • 真棒,这就是诀窍.我错过了,谢谢快速回答 (2认同)