1

次のクエリを実行しようとしています。

SELECT parent_id, id, due_date, object_subtype
  FROM amatia_logtask
 WHERE parent_id IN (SELECT id_actividad
                       FROM amatia_actividades
                      WHERE id_actividad = '12624'
                         OR id_padre = '12624')
 GROUP BY parent_id id

ただし、エラーメッセージを理解できません。

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 9 Column: 41

説明をお願いします。

4

4 に答える 4

3

には2つの列がGROUP BYあり、それらの間にコンマはありません。

group by parent_id, id
                  ^ --- missing this

ただし、列でグループ化しようとしている場合は、GROUP BYすべてのフィールドを使用できます。

 group by parent_id, id, due_date, object_subtype
于 2013-01-21T14:49:04.460 に答える
2

あなたが何を求めているのかは明確ではありません-以下はあなたに行の明確なリストを与えるでしょう:

SELECT DISTINCT y.parent_id, y.id, y.due_date, y.object_subtype
  FROM amatia_logtask y
 WHERE y.parent_id IN (SELECT x.id_actividad
                         FROM amatia_actividades x
                        WHERE '12624' IN (x.id_actividad, x.id_padre))

Oracleでは、GROUP BYから列を省略できないため、集計関数でラップする必要がある列はすべて省略できます。IE:

SELECT y.parent_id, y.id, 
       MAX(y.due_date) AS due_date, MIN(y.object_subtype) AS object_subtype
  FROM amatia_logtask y
 WHERE y.parent_id IN (SELECT x.id_actividad
                         FROM amatia_actividades x
                        WHERE '12624' IN (x.id_actividad, x.id_padre))
GROUP BY y.parent_id, y.id
于 2013-01-21T14:53:41.267 に答える
2

句は列または式のコンマ区切りのGROUP BYリストであるため、コンマがありません。

SELECT句のすべての式は、グループ化するか、(集計関数を使用して)集計する必要があるため、エラーが発生します。

だからあなたは書きたいかもしれません:

SELECT parent_id, id, due_date, object_subtype
  FROM amatia_logtask
 WHERE parent_id IN (SELECT id_actividad
                       FROM amatia_actividades
                      WHERE id_actividad = '12624'
                         OR id_padre = '12624')
 GROUP BY parent_id, id, due_date, object_subtype

GROUP BY集計のないクエリは本質的にDISTINCTクエリであるため、ここで個別に使用して意図を示唆することもできます。

SELECT DISTINCT parent_id, id, due_date, object_subtype
  FROM amatia_logtask
 WHERE parent_id IN (SELECT id_actividad
                       FROM amatia_actividades
                      WHERE id_actividad = '12624'
                         OR id_padre = '12624')
于 2013-01-21T14:53:59.917 に答える
0

このPlzを試してください

SELECT parent_id, id, due_date, object_subtype
  FROM amatia_logtask
 WHERE parent_id IN (SELECT id_actividad
                       FROM amatia_actividades
                      WHERE id_actividad = '12624'
                         OR id_padre = '12624')
 GROUP BY parent_id,id

あなたは条項にコンマがありませんGROUP BY。幸運を祈ります

于 2013-01-22T07:53:17.563 に答える