J'essaie de filtrer Lorsque j'ai utilisé la requête sans utiliser de groupe par IT renvoie les résultats suivants: p> cg_group code> noms (veuillez consulter la requête) et groupe (en utilisant: groupe par code>) les résultats suivants de la dernière opportunité mise à jour (en utilisant: Commander par opportunités.date_modified Desc code>). SELECT cg_groups.name
FROM cg_groups
JOIN cg_groups_cstm ON cg_groups_cstm.id_c = cg_groups.id
JOIN accounts_cstm ON cg_groups.name = accounts_cstm.client_group_c
JOIN accounts ON accounts.id = accounts_cstm.id_c
JOIN accounts_opportunities ON accounts.id = accounts_opportunities.account_id
JOIN opportunities ON accounts_opportunities.opportunity_id = opportunities.id
WHERE cg_groups.deleted='0' AND cg_groups_cstm.status_c='1' AND opportunities.deleted='0'
GROUP BY cg_groups.name
ORDER BY opportunities.date_modified DESC
3 Réponses :
Mettez mais pour votre résultat, vous pouvez essayer ci-dessous, il suffit d'utiliser simplement distinct P> opportunités.date_modified code> dans la sélection et le groupe par alors que vous pouvez l'utiliser dans la commande par SELECT distinct cg_groups.name
FROM cg_groups
JOIN cg_groups_cstm ON cg_groups_cstm.id_c = cg_groups.id
JOIN accounts_cstm ON cg_groups.name = accounts_cstm.client_group_c
JOIN accounts ON accounts.id = accounts_cstm.id_c
JOIN accounts_opportunities ON accounts.id = accounts_opportunities.account_id
JOIN opportunities ON accounts_opportunities.opportunity_id = opportunities.id
WHERE cg_groups.deleted='0' AND cg_groups_cstm.status_c='1' AND opportunities.deleted='0'
order by cg_groups.name
@Daleburrell oui vous avez raison 1ère réponse pour erreur 2e est pour le résultat souhaité BTW merci
Votre deuxième requête ne fait pas de commande du tout. Êtes-vous sûr que c'est ce que veut l'OP?
Utiliser Row_Number code> Pour trouver le dernier enregistrement mis à jour pour chaque groupe: WITH cte AS (
SELECT cg_groups.name, o.date_modified,
ROW_NUMBER() OVER (PARTITION BY o.date_modified DESC) rn
FROM cg_groups cg
INNER JOIN cg_groups_cstm cgc
ON cgc.id_c = cg.id
INNER JOIN accounts_cstm ac
ON cg.name = ac.client_group_c
INNER JOIN accounts a
ON a.id = ac.id_c
INNER JOIN accounts_opportunities ao
ON a.id = ao.account_id
INNER JOIN opportunities o
ON ao.opportunity_id = o.id
WHERE cg.deleted = '0' AND cgc.status_c = '1' AND o.deleted = '0'
)
SELECT name
FROM cte
WHERE rn = 1
ORDER BY date_modified DESC;
Que diriez-vous d'ajouter simplement distinct code> juste après votre Sélectionnez CODE> Déclaration.
Vous ne pouvez pas
commander par code> une valeur que vous n'êtes pasgrouper par code>. Tout comme vous ne pouvez pas le sélectionner. Vous auriez besoin de l'agréger par E.G.min (date_modifié) code> mais ce n'est peut-être pas le comportement que vous recherchez.Si "ABC Group" contenait deux lignes avec des dates = janvier 1 et 1 février avant le regroupement, lequel souhaitez-vous considérer dans l'ordre?