2013-06-28 2 views
0

J'ai la chaîne SQL suivante:groupe de requêtes SQL par domaine distinct, par ordre d'autres domaines

sSQL_Select = "SELECT distinct local_insurer, subsidiary, location FROM T_WILMA WHERE PARENT=" & lParent_ID & _ 
        " AND ACC_YEAR=" & lAcc_Year_ID & " AND ZOMBIE = FALSE GROUP BY local_insurer ORDER BY " & _ 
        "subsidiary ASC, location ASC;" 

accès renvoie une erreur parce que je ne peux pas le faire.
Ce dont j'ai besoin, c'est de tous les dossiers auprès d'un assureur local distinct, mais dans l'ordre alphabétique des champs subsidiaire et d'emplacement.
D'une certaine manière, je ne semble jamais obtenir les bons résultats.
Des idées?

Répondre

1

Supprimez le GROUP BY local_insurer de la requête. (distinct garantit que vous obtenez uniquement des combinaisons de valeurs uniques.)

+0

Je suis désolé Mark, mais il s'avère que cela ne m'a pas donné le résultat attendu après tout. En supprimant le groupe par, je reçois le même assureur plusieurs fois dans le résultat, alors que j'ai besoin de chaque assureur pour afficher une seule fois, tout en triant par les autres critères ... – Trace

+0

@KimGysen: Je supposais que soit (a) vous le feriez (b) vous voudriez voir toutes les combinaisons de filiales et d'emplacements pour chaque assureur. Si vous pouvez avoir plusieurs combinaisons de filiales et d'emplacements pour chaque assureur, mais que vous voulez seulement voir une ligne par assureur, alors quels critères voulez-vous utiliser pour déterminer quelle filiale et quel emplacement doivent être retournés pour chaque assureur? –

+0

En effet, il peut y avoir plusieurs filiales/emplacements pour le même assureur. Le contexte est qu'il y a deux requêtes: 1) requête qui boucle dans toute la table t_wilma (pour faire des calculs sur l'ensemble résultant) 2) la requête décrite dans ma question; Les deux ensembles de résultats aboutiront finalement à: "Si oRst! [Local_insurer] = oRst2! [Local_insurer] Ensuite, pour effectuer des calculs spécifiques, MAIS, à la fin, les administrateurs veulent avoir le rapport de sortie résultant dans un ordre spécifique, ce qui signifie que Je dois trier les deux requêtes dans le bon ordre dès le début – Trace

0

La raison pour laquelle vous obtenez l'erreur est que vous n'avez pas inclus tous les champs dans SELECT dans GROUP BY. Par exemple, si vous sélectionnez a, b, c, vous devez GROUPER a, b, c (ou c, b, a ...).

sSQL_Select = "SELECT distinct local_insurer, subsidiary, location FROM T_WILMA WHERE PARENT=" & lParent_ID & _ 
       " AND ACC_YEAR=" & lAcc_Year_ID & " AND ZOMBIE = FALSE GROUP BY local_insurer, subsidiary, location ORDER BY " & _ 
       "subsidiary ASC, location ASC;" 
+0

Je n'ai besoin de valeurs distinctes que sur l'assureur local, mais je n'ai pas encore trouvé de réponse. – Trace