Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Under forudsaetning af at det er noget som du tilgaard fra et program saa synes det mest logisk at foerst lave en query paa tabel 1 og saa konstruere query paa tabel 2 udfra denne.
Tak for dit svar. Jeg arbejder desværre ikke i et program, men forsøger at lave et enkelt select statement, der henter dataene.
Umiddelbart ville jeg tro, at det kunne være noget lignende
SELECT Kundenummer, (SELECT COL1 FROM TABEL1 b WHERE b.Kundenummer = a.Kundenummer) VAL_COL1, (SELECT COL2 FROM TABEL1 b WHERE b.Kundenummer = a.Kundenummer) VAL_COL2 FROM TABEL2 a
Så en slags... SELECT Kundenummer, Værdi for kolonnen med navnet (SELECT COL1 FROM TABEL1 b WHERE b.Kundenummer = a.Kundenummer) VAL_COL1, ( Værdi for kolonnen med navnet SELECT COL2 FROM TABEL1 b WHERE b.Kundenummer = a.Kundenummer) VAL_COL2 FROM TABEL2 a
select kundenummer, col1, col2 from tabel1 ) , data2 as ( select kundenummer,val_col1,val_col2 from tabel2 )
select a.Kundernummer,a.col1,a.col2,b.val_col1,b.val_col2 from data a inner join data2 b on a.kundernummer = b.kundenummer
inner join eller left join er op til dig
Synes godt om
Slettet bruger
19. november 2015 - 09:10#5
Læste måske dit spm forkert.
Men med ovenstående kan du joine dine rækker sammen. Ellers skal du lave PIVOT som arne skriver:)
Du opstiller det lidt rodet synes jeg - Hvad er formålet og hvorfor er det så ustruktureret dine tabeller?
Synes godt om
Slettet bruger
19. november 2015 - 15:02#6
Et select som dette vil finde de rigtige data - men man kan ikke blande datatype i samme kolonne, så der skal der bruges CAST eller CONVERT.
select t1.Kundenummer ,case when t1.Col1 = 'KUNDENAVN' then cast((select max(Kundenavn) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col1 = 'KUNDETYPE' then cast((select max(Kundetype) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col1 = 'KUNDEGRUPPE' then cast((select max(Kundegruppe) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col1 = 'PRISLISTE' then cast((select max(Prisliste) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) end Val_Col1 ,case when t1.Col2 = 'KUNDENAVN' then cast((select max(Kundenavn) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col2 = 'KUNDETYPE' then cast((select max(Kundetype) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col2 = 'KUNDEGRUPPE' then cast((select max(Kundegruppe) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) when t1.Col2 = 'PRISLISTE' then cast((select max(Prisliste) from Tabel2 where Kundenummer = t1.Kundenummer) as varchar) end Val_Col2 from Tabel1 t1
Jeg har ikke haft mulighed for at se på jeres besvarelser endnu. Jeg tror rahp måske har en løsning jeg kan bruge.
Jeg beklager strukturen i tabellerne virker rodet. Baggrunden er egentlig OK, men vil nok være lidt kompleks at forklare her. Jeg forsøger i princippet blot at genskabe en logik i en SQL som vores ERP anvender til at finde en pris på en given vare. Og til det har jeg behov for at finde værdien af et vilkårligt felt i kundestamdata, defineret af værdien i et felt i en anden tabel. Jeg kigger på jeres løsningsforslag og vender tilbage... Tak for hjælpen
-- Udfør forespørgsel... SELECT t1.KUNDENUMMER, CASE WHEN t1.COL1 = 'KUNDETYPE' THEN t2.KUNDETYPE WHEN t1.COL1 = 'KUNDEGRUPPE' THEN t2.KUNDEGRUPPE WHEN t1.COL1 = 'PRISLISTE' THEN t2.PRISLISTE ELSE NULL END AS COL1_VAL, CASE WHEN t1.COL2 = 'KUNDETYPE' THEN t2.KUNDETYPE WHEN t1.COL2 = 'KUNDEGRUPPE' THEN t2.KUNDEGRUPPE WHEN t1.COL2 = 'PRISLISTE' THEN t2.PRISLISTE ELSE NULL END AS COL2_VAL FROM #tabel1 AS t1 INNER JOIN #tabel2 AS t2 ON t1.KUNDENUMMER = t2.KUNDENUMMER;
Resultat: KUNDENUMMER COL1_VAL COL2_VAL ----------- ---------- ---------- 1234 12 A 2345 A 99
(2 row(s) affected)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.