2016-09-04 3 views
0

Diese SQL für die Verwendung einiger Zweck, aber auch ich gebe eine Sortierklausel (Reihenfolge von tdate) noch ist es nicht sortieren Datum. wie neu zu schreiben ‚TDate‘ Spalte sortiert zu bekommen: von AnsichtenSortierung in der Union alle nicht erfolgreich

SELECT TOP 100 PERCENT * 
FROM (SELECT TOP 100 PERCENT tdate, 
           parti, 
           Abs(Sum(amtdr)) AS Dr, 
           Sum(amtcr)  AS Cr, 
           nart 
     FROM dbo.dbo_dayb a 
     WHERE (account = 'bank') 
     GROUP BY idno, 
        tdate, 
        parti, 
        nart 
     UNION ALL 
     SELECT tdate, 
       parti, 
       amtdr, 
       amtcr, 
       nart 
     FROM dbo.dbo_dayb 
     WHERE (account = N'PDC account') 
       AND (post = N'Cr')) DERIVEDTBL 
ORDER BY tdate 
+0

Ist die tdate-Spalte vom Typ DATETIME sicher? Vielleicht ist es ein Varchar? – PacoDePaco

+0

Datetime Format – Pravi

+2

Versuchen Sie dies als Ansicht zu tun? –

Antwort

0

Wenn Daten Rückkehr SQL können Sie Daten auch neu anordnen, wenn Sie einen Auftrag durch Klausel verwenden. Ein Trick, dies zu umgehen, es zu benutzen ROW_NUMBER()

SELECT *, ROW_NUMBER() OVER (ORDER BY tdate) AS [ordinal] 
FROM (SELECT tdate, parti, ABS(SUM(amtdr)) AS Dr, SUM(amtcr) AS Cr, nart 
     FROM dbo.dbo_dayb a 
     WHERE  (account = 'bank') 
     GROUP BY idno, tdate, parti, nart 
     UNION ALL 
     SELECT  tdate, parti, amtdr, amtcr, nart 
     FROM   dbo.dbo_dayb 
     WHERE  (account = N'PDC account') AND (post = N'Cr') 
) derived 

Als Hinweis ... die beste Art und Weise Daten, um aus einer Ansicht in einer bestimmten Reihenfolge ist eine orderby auf die Abfrage hinzufügen, die Sie verwenden um die Daten abzurufen. (Und das ist der einzige Weg, der garantiert funktioniert)

0
((SELECT TOP 100 PERCENT * FROM 
(SELECT TOP 100 PERCENT tdate, parti, 
ABS(SUM(amtdr)) AS Dr, SUM(amtcr) AS Cr, nart FROM 
dbo.dbo_dayb a 
WHERE (account = 'bank') 
GROUP BY idno, tdate, parti, nart) 

UNION ALL 

(SELECT tdate, parti, amtdr, amtcr, nart 
FROM dbo.dbo_dayb 
WHERE (account = N'PDC account') 
AND (post = N'Cr')) DERIVEDTBL)) 

ORDER BY tdate 

Versuchen Sie, diese