Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


"Deackumulera" i sql?

Postades av 2010-05-27 16:19:57 - Niklas Jansson, i forum databaser, Tråden har 4 Kommentarer och lästs av 6715 personer

Stötte på ett litet problem, och blev förvånad över hur svårt det var. Om vi skiter i bakgrundsstoryn och accepterar detta (jag är 100% på att det måste lösas så här), så har vi en tabell:

Period, Ackumulerat Värde
1, 100
2, 150
3, 250
5, 400

Utöver detta finns det också ytterligare nycklar - låt säga en kategori. Ovanstående finns då också i motsvarande sekvenser för andra kategorier. (Sen finns det år också, men det går att lösa)

Vad jag nu vill ha är helt enkelt skillnaden mellan dem:

1, 100
2, 50
3, 100
5, 150

Men jag får inte ihop någon vettig lösning, bara monsterhistorier i 4-5 steg. (db: sqlserver 2005). Någon som har något förslag?


Svara

Sv: "Deackumulera" i sql?

Postades av 2010-05-27 16:33:03 - Henrik Malmberg

Ska period ha ett hopp mellan 3 och 5?

Annars hade något liknande detta fungerat;

SELECT t1.period, t1.ack, (ISNULL(t2.ack, 0)-t1.ack) diff
FROM tabell1 t1
LEFT JOIN tabell1 t2 ON t2.period = (t1.period+1)
ORDER BY t1.period


Svara

Sv: "Deackumulera" i sql?

Postades av 2010-05-27 17:47:32 - Lars Berg

<code>
create table t(period int,ack int);
insert into t values(1,100);
insert into t values(2,150);
insert into t values(3,250);
insert into t values(5,400);

select period,
Ack - coalesce((select Ack
from t
where period =
(select max(period)
from t
where period < q.period)),0)
from t as q;
</code>


Svara

Sv:"Deackumulera" i sql?

Postades av 2010-05-28 08:52:16 - Niklas Jansson

<b>>Ska period ha ett hopp mellan 3 och 5?</b>
Jepp, det var därför jag skrev just så... =)



Men Lars lösning ser ju åtminstone ut att fungera bra. Jag ska testa den varianten. Tack till båda!


Svara

Sv: "Deackumulera" i sql?

Postades av 2010-05-28 11:28:15 - Niklas Jansson

Och som en sista twist, låt säga att vi utöver detta då har år- och kategori-kolumner:

Kategori, År, Period, Ackumulerat Värde
A, 2010, 1, 100
A, 2010, 2, 150
A, 2010, 3, 250
A, 2010, 5, 400
B, 2009, 11, 75
B, 2010, 2, 150
B, 2010, 9, 315
B, 2011, 3, 500


Hur löser man det snyggast?
Detta för att få per kategori, kanske?

select <b>kat</b>, period,
Ack - coalesce((select Ack
from t
where period =
(select max(period)
from t
where period < q.period <b> and kat = q.kat</b>)),0)
from t as q;

Men vad är bäst för året? Spontant tänker jag på den halvfula men fullt fungerande lösningen year*100 + period alternativt year*12 + period.
Finns det något bättre?


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 556
27 958
271 741
309
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies