Går det att utföra följande direkt i SQL kod? Gör en riktig datamodell istället för att lagra semantisk information som en del av ett kolumnvärde. Tyvärr så ser databasen ut på detta sätt! Men om det alltid är dessa tre 'ord' i kolumnen är det ju bara att skapa en kopia av tabellen, där du delar upp kolumnen i tre. Sen fungerar Lars exempel på det.Gruppera och sortera data
Har Ex följande rader:
OBS! Nedanstående rader är en varchar kolumn ex OrderCode.
Ej tre kolumner
PCLNL 3030H 25
PCLNR 3030H 25
PCLNL 2525M 16
PCLNR 2525M 16
Steg1:
Hitta första L eller R från höger
Ersätta dom med ?
PCLN? 3030H 25
PCLN? 3030H 25
PCLN? 2525M 16
PCLN? 2525M 16
Steg2:
Om identisk kodrad återfinns gruppera denna och ersätt ? med R/L
PCLNR/L 3030H 25
PCLNR/L 2525M 16
Steg3:
Sortera efter dom två sista siffrorna
PCLNR/L 2525M 16
PCLNR/L 3030H 25Sv: Gruppera och sortera data
specifik lösning för sql-server (otestad)
select distinct case when charindex('L',c1) > 0 or charindex('R',c1) > 0 then
case when charindex('L',reverse(c1)) < charindex('R',reverse(c1)) then
stuff(c1,len(c1)-charindex('L',reverse(c1)))+1,1,'?')
else stuff(c1,len(c1)-charindex('R',reverse(c1)))+1,1,'?')
end
else c1
end ,c2,c3 from t order by c3
Korsposta inte.Sv: Gruppera och sortera data
Lyckas inte riktigt få till det med din kod!
Strängen som ska behandlas ligger i en kolumn, inte i tre!Sv: Gruppera och sortera data