Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
union, sort, in SQL 2005 View [SQL Server Management Studio 2005]
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers