J'ai besoin de mettre un enregistrement à la fin de l'ensemble de résultats trié par un champ de colonne dans l'ordre croissant.
LIKE:
Client | ... | Admin | Intern | .. --------------------------------------- #TOTAL# | ... | 4 | 2 | .. <-- this row here is grand total A | ... | 1 | | .. B | ... | 1 | 1 | .. C | ... | 2 | 1 | ..
Ce qui est défini par l'utilisateur valeur de la colonne.
Voici ce que j'essaye de faire:
SELECT cnt.name as Client, NULL, NULL, NULL, ', @COL_SUM, '
FROM
task as tsk
LEFT JOIN client cnt
ON tsk.client_id = cnt.id
GROUP BY tsk.client_id
UNION ALL
SELECT "#TOTAL#",NULL,NULL,NULL, ', @COL_SUM, '
FROM task as tsk
ORDER BY Client ASC
Ceci renvoie l'ensemble de résultats comme:
SELECT "#TOTAL"...
3 Réponses :
Essayez cette variante de code.
Pour mysql :
SELECT * FROM (
SELECT TOP 100 PERCENT cnt.name as Client, NULL, NULL, NULL, ', @COL_SUM, '
FROM
task as tsk
LEFT JOIN client cnt
ON tsk.client_id = cnt.id
GROUP BY tsk.client_id
ORDER BY TSK.CLIENT_ID) AS DATA
UNION ALL
SELECT "#TOTAL#",NULL,NULL,NULL, ', @COL_SUM, '
FROM task as tsk
Pour serveur sql p >
SELECT 0 as [OrderBy], cnt.name as Client, NULL, NULL, NULL, ', @COL_SUM, '
FROM
task as tsk
LEFT JOIN client cnt
ON tsk.client_id = cnt.id
GROUP BY tsk.client_id
UNION ALL
SELECT 1 , "#TOTAL#",NULL,NULL,NULL, ', @COL_SUM, '
FROM task as tsk
ORDER BY [ORDERBY], cLIENT_ID
Étant donné que vous ne pouvez pas appliquer la commande par ordre dans la première partie de votre requête, il existe donc une méthode pour le faire, 100% supérieurs , et vous pouvez appliquer la clause order by dans votre requête interne ou sous-requête.
J'espère que cela vous aidera.
Vous pouvez ajouter une autre colonne constante aux requêtes individuelles indiquant s'il s'agit d'un total ou d'une ligne régulière et classer par celle-ci en premier.
SELECT *
FROM (SELECT 0 first_order,
cnt.name client,
...
UNION ALL
SELECT 1 first_order,
'#TOTAL#' client,
...) x
ORDER BY first_order,
client;
Ajoutez simplement votre condition à la clause ORDER BY :
order by Client = '#TOTAL#', Client
C'est encore trop vague et ambigu. À quoi ressemblent vos données et à quoi voulez-vous que vos résultats ressemblent? Donnez des exemples spécifiques - il existe certainement de meilleures façons d'y parvenir que de truquer les caractères en fonction de l'ordre de tri.
Si vous vous demandez quels caractères vous pouvez ajouter à quelque chose pour qu'il soit trié en dernier, ceci ascii table devrait pouvoir vous aider. EDIT: La recherche d'une table ASCII devrait faire l'affaire si ce lien cesse de fonctionner. Ecrire
| TOTAL |,{TOTAL}ou~ TOTAL ~devrait faire l'affaire.@AleksG J'ai mis à jour mon message .. J'espère que cela est clair.
@LiHRaM Mais faites attention aux caractères non latins
Où ces données doivent-elles être utilisées? Si vous prévoyez de le sortir quelque part dans le code, il peut être préférable de ne pas inclure le total dans votre sql. Au lieu de cela, lorsque vous sortez des données de ligne, ajoutez les valeurs à la volée, puis affichez les totaux. De cette façon, ce sera toujours le dernier.
en gros, vous voulez ajouter le total au dernier résultat de votre requête.
@DarkRob oui c'est ça.
@Azima Les réponses vous ont-elles aidé ou avez-vous besoin d'autre chose?