0
verwenden

Wie wir diese Abfrage reslove, fand ich keine Lösung für Drop die zweite Zeile für jede Gruppe ... Ich brauche Hilfe bitte ... gibt es eine Funktion oder etwas, das nur unterschiedliche Werte für Gruppen mit rolllup zurückkehren können (hier deutliche können nicht verwendet werden)Wie Ergebnisse mit eindeutigen Werten erhalten, wenn wir Group von

SELECT 
    -- ROW_NUMBER() over (ORDER BY FF_DATE asc) as "numSituation" 
    FF_NUMERO as "numFacture" 
    , FF_DATE as "dateFacture" 
    , FF_DATEREG as "dateReglement" 
    , SUM(FF_D_HT) as "montantHT" 
    , SUM(FF_D_TTC) as "montantTTC" 
FROM F_FACTURESFOU 
INNER JOIN F_LIGNEFACFOU ON LFF_FFPTR = FF_NUMERO 
INNER JOIN F_LOT ON LFF_LT_IDENT = LT_IDENT 
WHERE LFF_CODE_AFF = '14031-00' AND LT_CODE IN ('S83') AND FF_DATEVALID is not null 
GROUP BY FF_NUMERO , FF_DATE, FF_DATEREG WITH ROLLUP 
HAVING ((FF_NUMERO is not null and FF_DATE IS NOT NULL) OR (FF_NUMERO is null and FF_DATE is null)) 
ORDER BY GROUPING(FF_NUMERO), FF_NUMERO, GROUPING (FF_DATE), FF_DATE , GROUPING (FF_DATEREG), FF_DATEREG 

Dies ist das Ergebnis:

15E1500062 2015-07-24 00:00:00.000 NULL 3000.00 3600.00 
15E1500062 2015-07-24 00:00:00.000 NULL 3000.00 3600.00 
15E1500063 2015-07-31 00:00:00.000 NULL 6000.00 7200.00 
15E1500063 2015-07-31 00:00:00.000 NULL 6000.00 7200.00 
15E1600423 2015-09-11 00:00:00.000 NULL 3000.00 3600.00 
15E1600423 2015-09-11 00:00:00.000 NULL 3000.00 3600.00 
NULL      NULL  NULL 12000.00 14400.00 

Antwort

0

Sie können SQL Row_Number() -Funktion mit Partition Nach Klausel Sie können Zeilen in der Ergebnismenge innerhalb jeder durch Part definierten Gruppe nummerieren ition By-Klausel

Dann können Sie alle Zeilen mit row_number Wert größer oder gleich 2

ausschließen Bitte überprüfen Sie SQL-Tutorial Row_Number() Over Partition By to delete duplicate rows in SQL Server

ROW_NUMBER() over (Partition By FF_NUMERO, FF_DATE ORDER BY 

Sie SQL CTE expression als

;with cte as (
SELECT 
    ROW_NUMBER() over (Partition By FF_NUMERO, FF_DATE ORDER BY .... DESC) as rn, 
    .... 
FROM .... 
) 
SELECT * from cte where rn = 1 
folgt verwenden können
0

Vielen Dank für Ihre Antwort Eralper, ich könnte row_number mit dem Schlüsselwort "mit" verwenden ... und es funktioniert (y)