Sql server 2008 Sql查询抛出错误
此查询给了我以下错误:- 列“TBL_PMC.pd_name_of_of_project”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中Sql server 2008 Sql查询抛出错误,sql-server-2008,tsql,Sql Server 2008,Tsql,此查询给了我以下错误:- 列“TBL_PMC.pd_name_of_of_project”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中 出现该错误的原因是,在执行SUM()函数时,必须按返回的任何列进行分组 由于pmc.[month]是group by子句中列出的查询中的唯一一个cloumn,因此它是唯一一个在列列表中不与聚合函数一起使用的列名称。很难判断您试图对查询执行什么操作,从外观上看,分组可能不是执行此操作的方式。您必须对select语句中除pmc.[month]列以
出现该错误的原因是,在执行SUM()函数时,必须按返回的任何列进行分组 由于
pmc.[month]
是group by子句中列出的查询中的唯一一个cloumn,因此它是唯一一个在列列表中不与聚合函数一起使用的列名称。很难判断您试图对查询执行什么操作,从外观上看,分组可能不是执行此操作的方式。您必须对select语句中除pmc.[month]列以外的所有列使用诸如MIN()、MAX()、AVG()之类的聚合函数,因为它在group by操作中使用
您的查询应该是这样的:
SELECT pmc.[month] AS 'Month',
pmc.pd_name_of_project AS 'Name of Project',
tbl_div.name AS 'Name of Advisory Services Division',
TBL_PMC_UNIT.UNIT_NAME AS 'Name of Unit',
pmc.staff_engineers,
pmc.staff_clerical,
pmc.staff_peons,
pmc.pd_project_type AS 'Project Type',
pmc.accepted_tender_cost AS 'Accepted Tender Cost',
pmc.work_order_date AS 'Work Order Date',
pmc.tender_period_months AS 'Tender Period',
pmc.project_completion_date AS 'Project Completion Date',
pmc.per_pmc_charges AS '% Of PMC Charges',
pmc.total_pmc_charges_scheme AS 'Total PMC amount of the Scheme',
pmc.bill_amount_certified_upto_previous_month AS 'Bill amount certified upto previous Month',
pmc.total_PMC_charges_upto_previous_month AS 'Total PMC charges upto previous Month',
pmc.receipt_PMC_charges_upto_previous_month AS 'Receipt of PMC Charges upto previous Month',
pmc.balance_of_PMC_charges_upto_previous_month AS 'Balance of PMC charges upto previous Month',
pmc.bill_amount_certified_current_month AS 'Bill amount certified During Current Month',
pmc.PMC_charges_for_current_month AS ' PMC charges During Current Month',
pmc.receipt_PMC_charges_current_month AS 'Receipt of PMC Charges During Current Monthh',
pmc.balance_of_PMC_charges_current_month AS 'Balance of PMC charges During Current Month',
SUM(pmc.salary_allowance) AS 'Salary Allowance'
FROM TBL_PMC pmc
INNER JOIN TBL_DIV
ON TBL_DIV.ID = pmc.DIV_ID
LEFT OUTER JOIN TBL_PMC_UNIT
ON TBL_PMC_UNIT.ID = pmc.UNIT_ID
WHERE pmc.div_id = 17
GROUP BY pmc.[month];
通过GROUP语句,您可以使用SELECT中包含在GROUP BY中或具有聚合函数的列。-正如错误消息所说 在这种情况下,您可以尝试使用SUM…OVER(PARTITION BY…)子句。检查 因此,请按行删除分组,并按如下方式更改您的总和:
SELECT pmc.[month] AS 'Month',
pmc.pd_name_of_project AS 'Name of Project',
tbl_div.name AS 'Name of Advisory Services Division',
TBL_PMC_UNIT.UNIT_NAME AS 'Name of Unit',
pmc.staff_engineers,
pmc.staff_clerical,
pmc.staff_peons,
pmc.pd_project_type AS 'Project Type',
pmc.accepted_tender_cost AS 'Accepted Tender Cost',
pmc.work_order_date AS 'Work Order Date',
pmc.tender_period_months AS 'Tender Period',
pmc.project_completion_date AS 'Project Completion Date',
pmc.per_pmc_charges AS '% Of PMC Charges',
pmc.total_pmc_charges_scheme AS 'Total PMC amount of the Scheme',
pmc.bill_amount_certified_upto_previous_month AS 'Bill amount certified upto previous Month',
pmc.total_PMC_charges_upto_previous_month AS 'Total PMC charges upto previous Month',
pmc.receipt_PMC_charges_upto_previous_month AS 'Receipt of PMC Charges upto previous Month',
pmc.balance_of_PMC_charges_upto_previous_month AS 'Balance of PMC charges upto previous Month',
pmc.bill_amount_certified_current_month AS 'Bill amount certified During Current Month',
pmc.PMC_charges_for_current_month AS ' PMC charges During Current Month',
pmc.receipt_PMC_charges_current_month AS 'Receipt of PMC Charges During Current Monthh',
pmc.balance_of_PMC_charges_current_month AS 'Balance of PMC charges During Current Month',
SUM(pmc.salary_allowance) AS 'Salary Allowance'
FROM TBL_PMC pmc
INNER JOIN TBL_DIV
ON TBL_DIV.ID = pmc.DIV_ID
LEFT OUTER JOIN TBL_PMC_UNIT
ON TBL_PMC_UNIT.ID = pmc.UNIT_ID
WHERE pmc.div_id = 17
GROUP BY pmc.[month];
总和(pmc.工资\津贴)超过(按pmc.[月]划分)您的查询没有意义。你想干什么?