Laden...

union, sort, in SQL 2005 View [SQL Server Management Studio 2005]

Erstellt von hape vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.869 Views
hape Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren
union, sort, in SQL 2005 View [SQL Server Management Studio 2005]

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

T
433 Beiträge seit 2006
vor 17 Jahren

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

hape Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

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

T
433 Beiträge seit 2006
vor 17 Jahren

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