Hallo,
ich habe einen komischen Effekt.
Führe ich auf eine SQL Server 2005 Datenbank eine Abfrage aus, kriege ich eine Ergebnismenge, die nach dem Datum schön sortiert ist:
SELECT 'Forderung' AS Satzart, Forderung, Datum, Betrag, 0 AS Zinssatz
FROM r1.ForderungZuAb
UNION
SELECT 'Basiszinssatz' AS Satzart, NULL AS Forderung, DatumAb AS Datum, 0 AS Betrag, Zins AS Zinssatz
FROM r1.Basiszins
ORDER BY Datum
Packe ich das selbe in eine Datenbank View, z.B. dbo.View_1, und führe dann eine neue Abfrage aus
select * from dbo.View_1
........ plötzlich ist die Sortierung futsch, er sortiert die Spalten in der Reihenfolge ihres Auftretens, also Spalte1, Spalte2, Spalte3, etc.
Wie kriegt man eine Sortierung in diese Union - View rein, so dass sie erhalten bleibt?
Liegt ggf. an der Tatsache, dass das Studio da ein TOP 100 PERCENT eingefügt hat,
wegen dem Hinweis:
Die ORDER BY-Klausel ist in Sichten, Inlinefunktionen, abgeleiteten Tabellen, Unterabfragen und allgemeinen Tabellenausdrücken nur dann gültig, wenn auch TOP oder FROM XML angegeben wird.
CREATE VIEW [dbo].[View_1]
AS
SELECT 'Forderung' AS Satzart, Forderung, Datum, Betrag, 0 AS Zinssatz
FROM r1.ForderungZuAb
UNION
SELECT TOP (100) PERCENT 'Basiszinssatz' AS Satzart, NULL AS Forderung, DatumAb AS Datum, 0 AS Betrag, Zins AS Zinssatz
FROM r1.Basiszins
ORDER BY Datum
Weiß jemand Rat?
Gruß Hape
Hi,
Sowohl das ORDER BY als auch das TOP aus der View rausnehmen und ggf. beim abfragen der View verwenden.
SELECT *
FROM dbo.View_1
ORDER BY Datum
Ansonsten wird dir schon gar nicht alle Ergebnisse von der View zur Verfügung gestellt (eben wegen der TOP Einschränkung).
Und wie du ja schon selbst geschrieben hast, kann ORDER BY in Views nur in Zusammenhang mit TOP verwendet werden 😉
Gruß,
Tom
Hi Tom,
Schade!
Danke fürs Antworten.
Wenn es die Einschränkung gibt, dass Views keine Sortierung integriert haben können, dann muß man das akzeptieren, und außerhalb sortieren, wenn man die View verwendet, so wie Du das vorschlägst.
(Nebenbei: TOP (100) PERCENT liefert schon alle Datensätze)
Danke,
Gruß Hape
Ups, ich hab das PERCENT überlesen 🙂
Ich glaub das Problem war das die Statements einzeln sortiert werden und dann erst zusammengefügt werden, kann mich da aber auch irren 😉
Gruß,
Tom