0

Oracle 10g では、SQL が例外をスローします:「式によるグループではありません」

select count(*)
        from (
            select h.personal_info_id pid,h.hbsag hbsag,h.sgpt sgpt,MAX(h.date_reported)
            from health_checkup_info h
            inner join personal_info p on h.personal_info_id = p.id
            where
                h.deleted = 0
                and h.date_reported is not null
                and h.hbsag in(1,2)
                and p.deleted = 0

            group by h.personal_info_id
        ) t where t.hbsag=1 and t.sgpt>=20

次に、「group by」パラメーターを変更し、「h.hbsag」「h.sgpt」を次のように追加します。

group by h.personal_info_id,h.hbsag,h.sgpt

しかし、結果は正しくありません。

4

3 に答える 3

0

Oracle の動作では、集計関数を除く選択されたすべての列をグループ化する必要があります。

select count(*)
        from (
            select h.personal_info_id pid,h.hbsag hbsag,h.sgpt sgpt,MAX(h.date_reported)
            from health_checkup_info h
            inner join personal_info p on h.personal_info_id = p.id
            where
                h.deleted = 0
                and h.date_reported is not null
                and h.hbsag in(1,2)
                and p.deleted = 0

            group by h.personal_info_id,h.hbsag,h.sgpt
        ) t

アップデート:

を使用しているだけcountなので、他の列を取得するには何が必要ですか?? これを試して..

select count(*)
        from (
            select h.personal_info_id pid,MAX(h.date_reported)
            from health_checkup_info h
            inner join personal_info p on h.personal_info_id = p.id
            where
                h.deleted = 0
                and h.date_reported is not null
                and h.hbsag in(1,2)
                and p.deleted = 0

            group by h.personal_info_id
        ) t;
于 2012-07-11T07:52:02.113 に答える
0

集計関数の一部ではないすべての列を追加する必要があります。これを試して。

select count(*) from 
( 
    select h.personal_info_id pid,h.hbsag hbsag,h.sgpt sgpt,MAX(h.date_reported) 
    from health_checkup_info h inner join personal_info p on h.personal_info_id = p.id 
    where h.deleted = 0 and h.date_reported is not null and h.hbsag in(1,2) and p.deleted = 0
    group by h.personal_info_id ,h.hbsag ,h.sgpt 
) t 
于 2012-07-11T07:49:01.307 に答える