0
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]; 

このクエリは私にエラーを与えています:-

列 'TBL_PMC.pd_name_of_project' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

4

4 に答える 4

0

このエラーが発生する理由は、SUM() 関数を実行するときに、返される列のいずれかでグループ化する必要があるためです。

于 2012-09-10T08:48:28.483 に答える
0

pmc.[month]group by 句にリストされているクエリの唯一の列であるため、列リストの集計関数で使用されなくても表示される唯一の列名です。クエリで何をしようとしているのかを判断するのは困難です。見た目だけでは、グループ化はこの方法に適していない可能性があります。

于 2012-09-10T08:48:42.333 に答える
0

GROUP ステートメントを使用すると、GROUP BY に含まれる、または集計関数を持つ列を SELECT で使用できます。- エラーメッセージが言ったように。

この場合、SUM...OVER (PARTITION BY ...) 句の使用を試みることができます。MSDNを確認してください。

Group By 行を削除し、合計を次のように変更します。

SUM(pmc.salary_allowance) OVER(PARTITION BY pmc.[月])

于 2012-09-10T10:08:02.890 に答える
0

group by 操作で使用される pmc.[month] 列を除く select ステートメントのすべての列に対して、MIN()、MAX()、AVG() などの集計関数を使用する必要があります。

クエリは次のようになります。

select pmc.[month] as 'Month',
max(pmc.pd_name_of_project) as 'Name of Project',
max(tbl_div.name) AS 'Name of Advisory Services Division',
max(TBL_PMC_UNIT.UNIT_NAME) AS 'Name of Unit',
.........
.........
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];
于 2012-09-10T08:51:34.560 に答える