Grinskeks Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 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?
flashpixx Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 Du kannst über einen Union und einzelne Selects jede einzelne Spalte abfragen, was ich aber etwas unschön finde. Ich würde da zu einem Pivot raten. Für MS SQL habe ich auf die Schnelle das hier gefunden Understanding SQL 2005's new PIVOT clause HTH Phil
delen Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 Pivot Tabellen (Teil 1 - Einführung) zwar nicht ganz aktuell. sollte sich dennoch umsetzten lassen, und ist auf deutsch. grüße delen
Grinskeks Geschrieben 2. Juli 2009 Autor Geschrieben 2. Juli 2009 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
flashpixx Geschrieben 2. Juli 2009 Geschrieben 2. Juli 2009 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
Grinskeks Geschrieben 3. Juli 2009 Autor Geschrieben 3. Juli 2009 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
dr.dimitri Geschrieben 3. Juli 2009 Geschrieben 3. Juli 2009 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
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden