webForumDet fria alternativet

Jämföra poster i följd

Databaser & SQL

1 svar · 315 visningar · startad av peraro

Medlem sedan mars 20081 inlägg
Frågan#1

Hej!
Jag undrar över om det finns nå't sätt att jämföra poster i en tabell beroende på vilken ordning de kommer?

I mitt fall har jag en tabell som innehåller registrerad produktion där varje rad innehåller information om varje tillverkning. Vad jag är ute efter är hur många omställningar som sker i produktionen. Det framgår av en alfanumerisk kolumn som innehåller resp. produktinfo. När den är annorlunda, skild från, föregående produktinfo har en omställning skett. D.v.s. det är inte antalet olika produktinfo som är intressant, utan i vilken ordning de kommer.

I en annan kolumn finns ett löpnummer som gör varje rad unik samt en annan kolumn som indikerar arbetsstation. Det är antalet omställningar per arbetsstation som är intressant.

Det kan exempelvis se ut så här (förenklat och jag har bara markerat omställningarna för arbetstation A för inte göra det för plottrigt)

Löpnr,Arb.station,Prod.info
1,A,Z
2,A,Z
3,B,X
4,A,Z
5,A,Y <- omställning
6,B,X
7,A,Y
8,A,Z <- omställning
9,B,Z
10,B,Z
11,A,Y <- omställning

Jag vill kunna få ut resultatet:

Omställningar per arbetstation A = 3, B = 1

I verkligheten förekommer fler arbetsstationer och de kan ha fler Prod.Info's. Dessutom finns en kolumn som indikerar tid som jag kan använda för att söka inom ett tidsintervall, men nöten att knäcka är för min del hur jag s.a.s. ska kunna jämföra en post med föregående post (per arb.station)

Mycket tacksam för tips!

Pelle

Medlem sedan dec. 200012 464 inlägg
#2
select arbetsStation,      
       sum((select 1
          from aTable t1
            where t1.arbetsStation = q.arbetsStation     
              and löpnr =     
                  (select max(löpnr)     
                     from aTable t2     
                    where t1.arbetsStation = t2.arbetsStation      
                      and t2.löpnr < q.löpnr)   
              and t1.prodInfo <> q.prodinfo))
  from aTable as q
 group by arbetsStation
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)