0

列のすべての値を追加してその列の合計を取得しようとしていますが、これに対するトリックを知っている人はいますか?

これが私のクエリです:

select T.*,
sum(nvl(BIN1,0))+sum(nvl(BIN2,0))+sum(nvl((BIN3,0)) as TOTAL
from
(
  SELECT CSM_FLASKS.FLASK_CODE,
    MN_ASSAYS_STAGES.ASSAY_STAGE_ID,
    VITRO_REP.TREATMENT_DOSE(CSM_FLASKS.GROUP_ID)                                               AS TREATMENT_DOSE,
    MN_RI_REP.FLASK_BIN_VALUE_BY_INDEX(MN_ASSAYS_STAGES.ASSAY_STAGE_ID, CSM_FLASKS.FLASK_ID, 1) AS BIN1,
    MN_RI_REP.FLASK_BIN_VALUE_BY_INDEX(MN_ASSAYS_STAGES.ASSAY_STAGE_ID, CSM_FLASKS.FLASK_ID, 2) AS BIN2,
    MN_RI_REP.FLASK_BIN_VALUE_BY_INDEX(MN_ASSAYS_STAGES.ASSAY_STAGE_ID, CSM_FLASKS.FLASK_ID, 3) AS BIN3,
    MN_RI_REP.CBPI_FLASK(MN_ASSAYS_STAGES.ASSAY_STAGE_ID, CSM_FLASKS.FLASK_ID, 1, 2, 2)         AS CBPI,
    CSM_EXPERIMENTS.EXPT_CODE
  FROM CSM_TREATMENT_GROUPS_EXPTS
  INNER JOIN CSM_ASSAYS
  ON CSM_ASSAYS.EXPT_ID = CSM_TREATMENT_GROUPS_EXPTS.EXPERIMENT_ID
  INNER JOIN CSM_FLASKS
  ON CSM_TREATMENT_GROUPS_EXPTS.GROUP_ID = CSM_FLASKS.GROUP_ID
  INNER JOIN MN_ASSAYS
  ON CSM_ASSAYS.ASSAY_ID = MN_ASSAYS.ASSAY_ID
  INNER JOIN MN_ASSAYS_STAGES
  ON MN_ASSAYS.MN_ASSAY_ID = MN_ASSAYS_STAGES.MN_ASSAY_ID
  INNER JOIN CSM_EXPERIMENTS
  ON CSM_EXPERIMENTS.EXPT_ID    = CSM_TREATMENT_GROUPS_EXPTS.EXPERIMENT_ID
  AND CSM_EXPERIMENTS.EXPT_ID   = CSM_ASSAYS.EXPT_ID
  WHERE CSM_ASSAYS.ASSAY_ID     = 1000060
  AND MN_ASSAYS_STAGES.STAGE_ID = 2
  ORDER BY CSM_TREATMENT_GROUPS_EXPTS.ORDER_INDEX,
    CSM_FLASKS.FLASK_ID,
    CSM_FLASKS.IS_PLUS DESC
) T

エラー: ORA-00937: 単一グループのグループ関数ではありません 00937. 00000 - "単一グループのグループ関数ではありません" *原因:
*アクション: 行: 1 列: 9 でエラーが発生しました

4

2 に答える 2

3

GROUP BY集計関数を使用する場合は、集計されていないフィールドを句に追加する必要があります。SUMしたがって、列には、GROUP BY句の集計関数にリストされていないフィールドをリストする必要があります。したがって、クエリは次のようになります。

SELECT FLASK_CODE,
SUM(nvl(BIN1, 0)) + SUM(nvl(BIN2, 0)) + SUM(nvl((BIN3, 0)) AS TOTAL
FROM
(
  ...

) T
GROUP BY FLASK_CODE

これはほんの一例です。ただし、句で選択するフィールドを決定するSELECT必要があり、句にもリストする必要がありますGROUP BY

于 2012-10-18T11:36:07.347 に答える
1

これを試してください: すべてのデータを単一の列に追加すると、次のようになります。

select sum( column_name ) from table inner join .........;

最後に、合計を見つけます

于 2014-01-31T07:58:33.903 に答える