Query met een COUNT in CASE WHEN statement
Karel Vermeer
01/05/2018 15:46:22Hallo allemaal,
Ik probeer de volgende query uit te voeren, maar krijg deze melding:
Selected non-aggregate values must be part of the associated group.
SELECT VCRM_CLI_DET.GIN_IDV,
CASE
WHEN VCRM_ATV_DET.COD_TYP_ATV = 'A' AND
COUNT(DISTINCT VCRM_ATV_DET.IDT_ATV_UNQ) > 0 AND
VCRM_ATV_DET.DAT_ATV BETWEEN <From_date> and <To_date> THEN
'Y'
ELSE
'N'
END
FROM VCRM_CLI_DET, VCRM_ATV_DET {,<TEMPTABLE> t}
WHERE VCRM_CLI_DET.GIN_IDV = VCRM_ATV_DET.GIN_IDV {AND
t.GIN_IDV = VCRM_ATV_DET.GIN_IDV
AND t.GIN_IDV = VCRM_CLI_DET.GIN_IDV}
GROUP BY 1
Ik had het vermoeden dat dit te maken had met de GROUP BY, die eveneens ,2 zou moeten bevatten, maar ook dat werkt niet. En ik vraag me ten zeerste af of de COUNT in de CASE WHEN statement wordt toegelaten.
Ik heb het ook al geprobeerd op te zetten met een HAVING clausule.
Wie o wie weet de oplossing?
Ik probeer de volgende query uit te voeren, maar krijg deze melding:
Selected non-aggregate values must be part of the associated group.
SELECT VCRM_CLI_DET.GIN_IDV,
CASE
WHEN VCRM_ATV_DET.COD_TYP_ATV = 'A' AND
COUNT(DISTINCT VCRM_ATV_DET.IDT_ATV_UNQ) > 0 AND
VCRM_ATV_DET.DAT_ATV BETWEEN <From_date> and <To_date> THEN
'Y'
ELSE
'N'
END
FROM VCRM_CLI_DET, VCRM_ATV_DET {,<TEMPTABLE> t}
WHERE VCRM_CLI_DET.GIN_IDV = VCRM_ATV_DET.GIN_IDV {AND
t.GIN_IDV = VCRM_ATV_DET.GIN_IDV
AND t.GIN_IDV = VCRM_CLI_DET.GIN_IDV}
GROUP BY 1
Ik had het vermoeden dat dit te maken had met de GROUP BY, die eveneens ,2 zou moeten bevatten, maar ook dat werkt niet. En ik vraag me ten zeerste af of de COUNT in de CASE WHEN statement wordt toegelaten.
Ik heb het ook al geprobeerd op te zetten met een HAVING clausule.
Wie o wie weet de oplossing?
Er zijn nog geen reacties op dit bericht.