3

次のようなビューがあります-問題なくコンパイルされますが、そこから選択しようとすると、ORA-00979: not a GROUP BY expression エラーが発生します。ビューからサブクエリ (列 4) を削除すると、すべて正常に動作します。どんなアイデアでも大歓迎です!ありがとう!!

select
    l.LAB_GROUP,
    l.NAME as LAB,
    b.NAME as BENCH,
    (select count(distinct s2.SAMPLE_NUMBER)
    from SAMPLE s2 inner join TEST t2 on s2.SAMPLE_NUMBER = t2.SAMPLE_NUMBER and t2.STATUS            in ('C', 'R') and s2.TEMPLATE <> 'QC_SAMPLE'
    inner join LABORATORY_ENTRY le2 on t2.ANALYSIS = le2.ANALYSIS
    where s2.LAB_GROUP = l.LAB_GROUP and le2.NAME = l.NAME and t2.X_BENCH = b.NAME and
    ((select count(t1.TEST_NUMBER)
    from TEST t1
    where t1.SAMPLE_NUMBER = t2.SAMPLE_NUMBER and t1.ANALYSIS = t2.ANALYSIS and t1.STATUS   <> 'R') = 0)) as RFR
from LABORATORY l
inner join LABORATORY_ENTRY le on le.NAME = l.NAME 
inner join X_BENCH b on b.NAME = le.X_BENCH
left join (SAMPLE s inner join TEST t on s.SAMPLE_NUMBER = t.SAMPLE_NUMBER and s.STATUS <> 'U'
and s.TEMPLATE <> 'QC_SAMPLE' and t.STATUS in ('I', 'P')) on t.ANALYSIS = le.ANALYSIS and s.LAB_GROUP = l.LAB_GROUP
left join V_LOC_DEPT_FAC ldf on ldf.LOCATION_NUMBER = s.STORAGE_LOC_NO 
group by l.LAB_GROUP, l.NAME, b.NAME 
4

2 に答える 2

3

group by を使用する必要がある場合 (集計関数を追加する場合はこれが当てはまりますが、クエリが現在作成されているわけではありません)、サブクエリgroup byも同様に含める必要があります。SELECTメインクエリの外側に追加GROUP BYし、そのレベルで適用することで、これを最も簡単に追加できます。

select lab_group, lab, bench, rfr
from 
(
   select
      l.LAB_GROUP as lab_group,
      l.NAME as LAB,
      b.NAME as BENCH,
      (select .....) as RFR
   from LABORATORY l
      inner join LABORATORY_ENTRY le on le.NAME = l.NAME 
      inner join X_BENCH b on b.NAME = le.X_BENCH
      left join (SAMPLE s inner join TEST t on ...) on 
          t.ANALYSIS = le.ANALYSIS and 
          s.LAB_GROUP = l.LAB_GROUP
      left join V_LOC_DEPT_FAC ldf on ldf.LOCATION_NUMBER = s.STORAGE_LOC_NO 
) x
group by lab_group, lab, bench, rfr
于 2013-05-29T14:47:35.540 に答える