Exemple de table
Je dois trier l'enregistrement ci-dessus par REMARKS
par ordre croissant, puis par FIRSTDATE
par ordre décroissant, puis par LASTDATE
par ordre décroissant
Je fais cette requête
select * from tblRecord
order by Remarks, FirstDate desc, Lastdate desc
Et me donne cette sortie
Cela devrait être comme ça:
Actualisé:
Startdate
et Enddate
se référer à la date de début réelle et à la dernière datefonctionnement des locataires, ce que je veux, c'est de séparer le tri du locataire par remarques, une fois arrêté, le tri doit être basé sur la première date dans l'ordre décroissant, lorsqu'il est démarré, doit être par date de fin dans l'ordre décroissant.
Réponses:
1 pour la réponse № 1Je ne sais pas ce que vous cherchez à voirvous ne répondez pas pour le moment, j'ai 2 situations dans lesquelles je peux obtenir le résultat que vous recherchez, 1 d'entre elles sera certainement erronée ou les deux pourraient être erronées mais elles produisent toutes les deux le résultat que vous recherchez avec le données de test que vous avez fournies
Situation 1: Vous devez commander par date de début décroissante lorsque vos remarques cessent et par date de début ascendante lorsque les remarques sont lancées, auquel cas vous obtiendrez ce code: SQLFIDDLE
select * from mytable
order by remarks,
CASE WHEN remarks = "started"
THEN startdate END ASC,
CASE WHEN remarks ="ceased"
THEN startdate END DESC,
enddate DESC
Situation 2: lorsque la remarque a cessé, vous devez commander les enregistrements par date de début et lorsque la remarque est lancée, vous devez commander par date de fin, auquel cas la requête serait: SQLFIDDLE
select * from mytable
order by remarks,
CASE WHEN remarks = "started"
THEN enddate END DESC,
CASE WHEN remarks ="ceased"
THEN startdate END DESC;
2 pour la réponse № 2
Cela vous aidera probablement à utiliser CASE
dans ORDER BY
SELECT * FROM tblRecord
ORDER BY CASE Remarks WHEN "started" THEN Lastdate
ELSE FirstDate END
DESC