webForumDet fria alternativet

MS SQL fråga som jag inte får ihop.

5 svar · 526 visningar · startad av Sjodahl

SjodahlMedlem sedan maj 20033 218 inlägg
#1

Hej!

Följande utgångsläge: (MS SQL)
För att lösa detta idag så för jag typ enligt följande i ASP kod.

1.Hämtar alla perioder och loopar igenom dessa
{
    2.Hämtar ut alla kategorier och loopar igenom dessa
    {
         3.Kontrollera alla kategorier i transLog och summera ihop.
        SELECT isnull(sum(nvalue), 0) AS Summa FROM transLog WHERE category='30' AND transDate BETWEEN '2008-03-20' AND '2008-04-25'
    }

}

Detta leder till att jag ställer ca 130st frågor emot databasen just nu för att ladda min sida. Men lyckas inte ställa någon smartare fråga. 2-3 känns som man borde kunna slå ihop rätt lätt.

Såhär vill jag ha ut det:
---------------------------------------------
PERIOD | Category1 | Category2 | Category3 |
---------------------------------------------
0701 | 450 kr | 5460kr | -3434kr |
---------------------------------------------
0702 | 350 kr | 4630kr | -2344kr |
---------------------------------------------

Untitled.jpg
Peter SMedlem sedan dec. 20025 483 inlägg
#2
select p.pname
     , c.catid
     , isnull(sum(l.nvalue), 0) AS Summa
  from periods p
inner
  join translog l
    on l.transdate between p.startdate and p.enddate
inner
  join category c
    on c.catid = l.category
group
    by p.pname
     , c.catid
SjodahlMedlem sedan maj 20033 218 inlägg
#3

Verkar absolut vara åt det hållet jag är ute efter.
Skulle även vilja klämma in userId='161' någonstans (så man bara får för just detta ID:et). Och istället för att visa själva catId så skulle jag vilja se "category".

Resultat just nu:

resultat.jpg
SjodahlMedlem sedan maj 20033 218 inlägg
#4

Då skall vi se om detta kan stämma:

select p.pname, c.category
     , c.catid
     , isnull(sum(l.nvalue), 0) AS Summa
  from periods p 
inner
  join translog l
    on l.transdate between p.startdate and p.enddate
inner
  join category c
    on c.catid = l.category AND c.userId='161' AND l.userId='161'
where p.userId='161'
group
    by p.pname
     , c.catid
	 , c.category
Peter SMedlem sedan dec. 20025 483 inlägg
#5

Är 'category' unikt?

select p.pname
     , c.category
     , isnull(sum(l.nvalue), 0) AS Summa
  from periods p 
inner
  join translog l
    on l.transdate between p.startdate and p.enddate
inner
  join category c
    on c.catid = l.category
 where p.userId = 161
group
    by p.pname
     , c.category
SjodahlMedlem sedan maj 20033 218 inlägg
#6

Peter S skrev:

Är 'category' unikt?

Hej, category behöver inte vara unik idag. (men borde nog se till så man inte kan lägga till en kategori som redan finns).
Stort tack, tror nu att jag fått ut det jag ville. Skall jag bara lyckas få in det på sidan med.

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)