Har en fil med installations ID, månad och antal:
1, Januari, 4
1, Februari, 7
2, Februari, 3
osv...
Från detta kan jag enkelt få fram kundnummer och göra en rapport på formatet:
1, Januari, 4, kundnummer
1, Februari, 7, kundnummer
2, Februari, 3, kundnummer
osv...
Men nu vill de istället ha rapporten som(givet att installations ID 1 och 3 hör till samma kundnummer):
kundnummer
1, Januari, 4
1, Februari, 7
3, Januari, 3
kundnummer
2, Februari, 3
Går detta att få till direkt med SQL eller behövs något mer? Tänker lite att jag lägger in en vy för att få till en 'temporär' tabell med kundnummer, men hur får jag dem sedan på en rad för sig och grupperar de installations ID som hör till det kundnumret under?
Det där är nog något som helst skulle ligga i presentationslagret.
Om du ska lösa det i en enda SQL-fråga måste alla rader ha samma antal kolumner. Det går att lämna celler blanka på kreativt vis…
Jag hade helt enkelt börjat med att sudda kundnumret på alla rader som inte är den första på den kunden. ROW_NUMBER OVER PARTITION BY kundnummer (läs exakt syntax för din dialekt av SQL) och agera på det returnerade radnumret med IF, där allt över 1 suddar kundnummret.
Kan säkert kombineras med att skapa en dummy-temp-tabell med en rad för varje kund som man ser till alltid hamnar först för varje kund (månad noll typ) i slutresultatet och får in i datat med UNION. Den raden skulle kunna ha en summa som man visar.
Kolumner alltså:
Kundnr Summa InstallationsId Månad Antal
Där vissa celler är blanka och andra inte är det.
K2 3 blankt blankt blankt blankt
blankt blankt 2 Februari 3
För kunden K2 som bara har en Februari-rad.
Edit: Det finns så klart varianter där man skjuter ut all data i en enda textkolumn, men någon jävla stolthet får man ju ha. Cursors kan vara en annan variant, speciellt om det går att leverera två result sets per kund.
Spelnyheter från FZ
Copyright © 1999–2025 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.