Obtenir Tous les paramètres Sélectionner apparaissent dans le groupe par: p> ora-00979 Pas un groupe par expression code>
Je ne trouve pas le problème.
3 Réponses :
Vous pouvez simplifier votre requête à l'aide de la sous-requête comme suit:
SELECT
MERCHANT_NAME,
CONTRACT_ID,
TERMINAL_NUMBER,
POSTING_DATE,
CATEGORY,
TRX_TYPE_DESC,
CURRENCY_ID,
SUM(SETTLE_AMOUNT_ORG) AS "SUM(T.GROSS_AMOUNT_ORG)",
COUNT(*)
FROM
(
SELECT
CASE
WHEN :CONTRACT_NUMBER LIKE '001-CR-%' THEN T.PARTNER_NAME
ELSE T.OPPORTUNITY_NAME
END MERCHANT_NAME,
CASE
WHEN :CONTRACT_NUMBER LIKE '001-CR-%' THEN T.ACQ_CONTRACT_NUM_PRT
ELSE T.ACQ_CONTRACT_NUM_MER
END CONTRACT_ID,
T.TARGET_MID_ID AS TERMINAL_NUMBER,
T.ACQ_POSTING_DATE AS POSTING_DATE,
'Processing Activity' CATEGORY,
CASE
WHEN TY.CREDORAX_TRX_TYPE = 'Refund' THEN 'Refund (Credit)'
ELSE TY.CREDORAX_TRX_TYPE
END AS TRX_TYPE_DESC,
CU.CURRENCY_ID,
T.SETTLE_AMOUNT_ORG
FROM
TMP_PROC T
JOIN DWH.DIM_TRX_TYPE TY ON T.TRX_TYPE_KEY = TY.TRX_TYPE_KEY
JOIN TMP_CURRENCY CU ON CU.CURRENCY_KEY = T.SETTLE_CURRENCY_KEY
)
GROUP BY
MERCHANT_NAME,
CONTRACT_ID,
TERMINAL_NUMBER,
POSTING_DATE,
CATEGORY,
TRX_TYPE_DESC,
CURRENCY_ID
Ne le fais pas de cette façon. Ne mettez pas d'expressions de cas dans le groupe par clause.
Essayez la requête de ré-écriture sans expression de cas du tout: p> Lorsque vous avez cela fonctionnant, puis wallez dans un autre SQL pour faire des expressions de cas: p> qui peut mieux fonctionner. p> p>
Séparez la logique de cas du groupe en mettant le boîtier dans une expression de table commune, puis effectuez le groupe par la CTE:
CASE WHEN SUBSTR(:contract_number, 1, 7) ='001-CR-' THEN t.PARTNER_NAME ELSE t.OPPORTUNITY_NAME END AS MERCHANT_NAME
La façon dont je le vois, c'est ok aussi loin que Oracle (base de données) est concerné. Êtes-vous sûr que c'est la requête qui soulève l'erreur? Je vois que vous avez marqué la question avec Java Tag. Pourrait-il être qu'il gâte la requête? (Je ne parle pas Java).
Sont ces deux lignes vides, entre le code> code> et le groupe
par code>, faisant partie du texte de la requête que vous essayez d'exécuter? Si oui, éliminez-les d'eux. Sinon, modifiez votre question pour afficher le texte de requête exacte.Il est avec des lignes vides, enlevées, même erreur
Où dirigez-vous la requête? Pourrait-il être la ligne vide est traitée à la fin de la requête (cela pourrait être dépend des paramètres)?