Zum Inhalt springen

Ms SQL - Datensatz einer Tabelle in n Datensätze einer View


Empfohlene Beiträge

Geschrieben

Hallo Forum,

zur Zeit beschäftigt mich folgendes Problem:

Ich habe eine Tabelle Artikel mit 10 Preisen (VK1 - VK10) und einer Artikelnummer. Jetzt möchte ich daraus eine View machen, die mir für jeden Preis einen Datensatz in der Art Artikelnummer | VK1 macht.

Also aus Artikelnummer | VK1 | Vk2 | ....|VK10 in einer Zeile sollen in der View

Artikelnummer | VK1

Artikelnummer | VK2

............

Artikelnummer | VK10

werden.

Kann mir jemand einen Tip geben, wie ich das hinbekomme?

Geschrieben

Hallo und Danke für die Tips. Ich habs zwischenzeitlich mathematisch gelöst und zwar über Union.

Morgen kann ich das fertige SQL Script ja mal hochladen. Nochmals danke für die Tips mit den Pivot Tabellen: Das Tutorial habe ich mir mal gleich gebookmarkt :rolleyes:

Geschrieben
Hallo und Danke für die Tips. Ich habs zwischenzeitlich mathematisch gelöst und zwar über Union.

Was ist daran mathematisch? Vielleicht dass Du Mengen verbindest, aber es ist weit hergeholt.

Ich kann Dir nur dringend den Rat zu dem Pivot geben, denn der Union muss eben einige Selects ausführen und unter Umständen hast Du keine Eindeutigkeit mehr für jeden Datensatz

Phil

Geschrieben

Ich habe es über UNIONS gelöst - Relationenalgebra halt.

In der Form:

r È s := {t Î Tup (X) | t Î r Ú t Î s }

Die Eindeutigkeit ist immer gegeben und falls die Performance Probleme bereiten wird, kann ich die View immer noch optimieren. Das Problem sehe ich als gelöst an und jetzt kann ich mich den nächsten Problemen widmen ;-)

Hier ein Teil der View:

CREATE View v_Artikelverkaufspreise as

Select Artikel.Artikelnr as Artikelnr ,Artikel.Preis_Vk1 as Preis,'Bezeichnung'='1' FROM

dbo.Artikel where Artikel.Preis_Vk1 >0

union

Select Artikel.Artikelnr as Artikelnr ,Artikel.Preis_Vk2,'Bezeichnung'='2' FROM

dbo.Artikel where Artikel.Preis_Vk2 >0

union

Select Artikel.Artikelnr as Artikelnr ,Artikel.Preis_Vk3,'Bezeichnung'='3' FROM

dbo.Artikel where Artikel.Preis_Vk3 >0

union

Select Artikel.Artikelnr as Artikelnr ,Artikel.Preis_Vk4,'Bezeichnung'='4' FROM

dbo.Artikel where Artikel.Preis_Vk4 >0

union

Select Artikel.Artikelnr as Artikelnr ,Artikel.Preis_Vk5,'Bezeichnung'='5' FROM

dbo.Artikel where Artikel.Preis_Vk5 >0

Geschrieben
und falls die Performance Probleme bereiten wird

Die erste Möglichkeit wäre, dass Du UNION durch UNION ALL ersetzt, das ganze als Subselect schreibst und dann im übergeordneten SELECT per DISTINCT einmalig eindampfst. Momentan machst Du das nämlich 4 mal.

Dim

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...