に私は、Oracleの2つのバージョン、Oracle Database 11gのEnterprise Editionのリリース11.2.0.1.0ていない - 生産とOracle Database 11gのEnterprise Editionのリリース11.2.0.3を0.0 - 64ビットの生産クエリは、Oracleのバージョンで動作しますが、他の
そして私は、このSQLを持っている:
select an.idai, t1.fecha, 53, t1.val_d60, 0
from
(select ides, cana, ctec, trunc(fecha_d60, 'MM') as fecha, val_d60,
row_number() over (partition by ides,cana,ctec, trunc(fecha_d60, 'MM')
order by val_d60 asc) as orden
from azul_estdata60
where idflagv = 11
and ides < 25
and fecha_d60 >= '01/01/2016' and fecha_d60 <= '31/12/2016'
and cana = 8
order by ides, cana, ctec, val_d60 desc
) t1,
(select ides, cana, ctec, trunc(fecha_d60, 'MM') as fecha,
round(count(*)*.5,0) as percentil
from azul_estdata60
where idflagv in (11,12,13)
and ides < 25
and fecha_d60 >= '01/01/2016' and fecha_d60 <= '31/12/2016'
and cana = 8
group by ides, cana, ctec, trunc(fecha_d60, 'MM')
) t2
inner join azul_analogin an
on an.cana = t2.cana
and an.ctec = t2.ctec and an.ides = t2.ides
where t1.ides = t2.ides
and t1.cana = t2.cana
and t1.ctec = t2.ctec
and t1.fecha = t2.fecha
and orden = percentil;
それは11.2.0.3.0に、私はこのエラーを取得し、11.2.0.1.0に動作しますが、:
ORA-00979: no es una expresión GROUP BY
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
これを解決するにはどうすればよいですか?
Thx。
''01/01/2016''は**ではない**日付。 Oracleはフォーマット・マスクとして 'NLS_DATE_FORMAT'セッション・パラメータを使用して日付に暗黙的に変換しようとする可能性がありますが、このマスクが一致しないと変換は失敗します(パラメータはセッションの各ユーザーによって設定されるため、それは1人のユーザのために働くことができるので、デバッグするのは苦痛であり、他のユーザはそうではない)。 'TO_DATE('01/01/2016 '、' DD/MM/YYYY ')'またはANSI日付リテラル 'DATE' 2016-01-01''を使用する方が良いでしょう。 – MT0
NLS_DATE_FORMATは 'DD/MM/YYYY'、スペイン語の形式ですが、とにかく日付を変更しますが、同じエラーが発生します。 – Darkerviti
ポイントを逃す - ''01/01/2016''は文字列で日付ではありません。あなたが日付のための文字列を使用して暗黙的な変換に頼っているかどうかに関わらず、ユーザはセッションで 'NLS_DATE_FORMAT'を変更することができ、暗黙的な変換**に依存しているすべてのクエリを壊すので、 *クエリの変更。 – MT0