Ett litet delikat SQL-sorteringsproblem

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Kristianstad
  • 2008-10-28 19:40

Hej! Jag har ett litet bekymmer som det borde finnas en mycket enkel lösning på utan att behöva gå omvägar. Det handlar om ett system för lagerhantering av olika artiklar. Jag har där en tabell med bl.a 2 st datumfält. Ett av dem är när en artikel senast lagrades IN medans det andra är när artikeln senast lagrades UT. Jag hade önskat att tabellen även hade ett 3:e fält för när en artikel senast ändrades, dvs när artikeln senast in- eller utlagrades men så enkelt är det inte och det kan jag heller inte göra något åt eftersom det inte är mitt system. Hur som helst, det är i detta fallet förstås en baggis att skapa listor sorterade efter senaste in- och/eller utlagring av artiklar. Men hur gör jag enklast om jag vill få en lista över senaste ÄNDRADE artiklar? Jag vet ett klumpigt sätt men det borde rimligtvis gå att lösa via SQL-queryn (SQL Server handlar det om förresten ifall det har betydelse).

Mvh
Håkan

select *, GREATEST(date_in, date_out) as date_changed FROM articles ORDER BY date_changed DESC;

Noll garantier whatsoever, men har jag fattat dig rätt så är det något sådant som efterfrågas.

  • Medlem
  • Kristianstad
  • 2008-10-29 10:26

Du förstod mitt dilemma alldeles rätt, och ditt exempel hade fungerat perfekt om SQL Server haft GREATEST funktionen, men tyvärr är det bara Oracle som har den. Men ditt tips fick mig ändå att komma fram till en lösning, nämligen följande:

SQL="Select *, Case When UtDatum>InDatum then UtDatum else InDatum End As InUtDatum From Artiklar ORDER BY InUtDatum DESC"

Så nu lärde jag mig 2 nya saker, både hur man skapar ett nytt fält (InUtDatum) samt Case funktionen.

Tack!

1
Bevaka tråden