Bonjour,

Est-ce qu'il y a moyen de faire la requête ci-dessous plus simplifiée et plus propre ?

Merci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT        TOP (100) PERCENT dbo.E_ANLA.ANLN1, dbo.E_ANLA.TXT50, dbo.E_ANLA.GDLGRP, dbo.E_ANLA.ORD43, dbo.E_ANLA.ANLN2, dbo.E_ANLZ.STORT
FROM            dbo.E_ANLA 
 
				INNER JOIN dbo.E_ANLZ ON dbo.E_ANLA.ANLN1 = dbo.E_ANLZ.ANLN1
 
				INNER JOIN (SELECT        ANLN1, MAX(ANLN2) AS Max2
                               FROM            dbo.E_ANLA
                               GROUP BY ANLN1) ReqMax ON dbo.E_ANLA.ANLN1=ReqMax.ANLN1 and dbo.E_ANLA.ANLN2=ReqMax.Max2
 
WHERE        (dbo.E_ANLZ.BDATU = '99991231') AND (dbo.E_ANLZ.GSBER = '0001')
ORDER BY dbo.E_ANLA.ANLN1
Comme vous pouvez le voire, le but est de prendre le MAX du champ ANLN2 de la table E_ANLA, faire une jointure avec ANLN1 qui se trouvent dans les 2 table spour récupérer le champ STORT de E_ANLZ, et filtrer avec le WHERE à la fin sur les 2 champs BDATU et GSBER de la table E_ANLZ