如何在sql中使用select语句加入视图

时间:2015-04-20 23:15:43

标签: sql sql-server

我想创建一个View,它将生成一个可用于生成月度账单的列表,以便我可以创建一个报告。在这个视图中,我想要雇主姓名,雇主联系人姓名(第一个和最后一个联系人),计划ID和描述,该计划中的雇员数,计划成本和计费金额(计数*计划成本)与视图按雇主姓名和PlanID排序。到目前为止,这就是我所拥有的:

CREATE VIEW VIEW15 AS (SELECT EMPLNAME, EMPLCONTACTFIRSTNAME, EMPLCONTACTLASTNAME
FROM EMPLOYERS);
SELECT PLANS.PLANID, PLNDESCRIPTION, COUNT(PLANS.CARRIER_ID), PLNCOST, (COUNT(PLANS.CARRIER_ID) * PLNCOST)
FROM PLANS, LEWISVIEW15
WHERE PLANS.PLANID = view15.planid
GROUP BY PLANS.PLANID, PLNDESCRIPTION;

我得到的当前错误是VIEW15无效的标识符。 它没有运行,我希望在正确的方向上有一些指导来实现这一目标。

2 个答案:

答案 0 :(得分:0)

您无法创建VIEW并在同一交易中使用它。

如果这是SSMS,请在GOCREATE语句之间添加SELECT

如果这是在应用程序中,请单独运行脚本。

答案 1 :(得分:0)

将这两个语句与批处理分隔符GO分开,它应该可以正常工作。

如果您的选择查询不在任何聚合函数中,但是任何一个或多个列在该选择中都应用了聚合函数,那么您的选择查询必须包含group by子句中的所有列。

CREATE VIEW VIEW15 
AS 
SELECT EMPLNAME, EMPLCONTACTFIRSTNAME, EMPLCONTACTLASTNAME
FROM EMPLOYERS;
GO


SELECT PLANS.PLANID
    , PLNDESCRIPTION
    , COUNT(PLANS.CARRIER_ID)
    , PLNCOST
    , COUNT(PLANS.CARRIER_ID) * PLNCOST
FROM PLANS
INNER JOIN LEWISVIEW15 ON PLANS.PLANID = view15.planid
GROUP BY PLANS.PLANID
    , PLNDESCRIPTION
    , PLNCOST
GO