Avatar billede kristian21 Praktikant
18. oktober 2010 - 18:06 Der er 5 kommentarer og
1 løsning

Udtræk tabel med omsætning

Hej,

Jeg vil gerne kunne sammenligne salg pr. måned i min shop for i år op imod sidste år.

Jeg skal have lavet en simpel tabel med år hen og måneder ned i asp.

              2009      2010
Januar        0        600
Februar      450      799
Marts        530      899
etc.

Jeg har lavet en sql, hvor jeg får omsætningen pr. måned

Sql = "SELECT Year(OrderTime) AS OrderYear, Month(OrderTime) AS Ordermonth, sum(OrderSum) AS OrdersCount FROM viewOrder GROUP BY Year(OrderTime), Month(OrderTime)"

Det virker også, men jeg skal have det stillet op i en tabel som ovenstående. Det driller mig. Nogle der kan hjælpe?

Shoppen er først startet februar 2009, derfor er der ingen ordrer januar 2009, så der skal systemet skrive 0.

På forhånd tak.
Avatar billede sifuentes Nybegynder
18. oktober 2010 - 19:50 #1
Det hedder krydstabulering, du skal så indstille rækkeoverskrifter og kolonneoverskrifter. Lav først en forespørgsel der skaber alle dine grunddata, og brug så den forespørgsel til at kreere krydtabuleringen, så er det nemmere at få det til spille, brug evt. en guide. Det kan også laves som en rapport.
Avatar billede kristian21 Praktikant
19. oktober 2010 - 09:41 #2
Hej - tak for dit svar. Læser jeg det korrekt, hvis du refererer til hvordan man laver det i Access og ikke i Asp ?
Avatar billede sifuentes Nybegynder
19. oktober 2010 - 15:05 #3
Ja det er en god ide først at lave krydstabuleringen i access, og dernæst aflæse/aflure (i SQL visning) hvad access har foreslået af løsning, og dernæst implementere løsningen i ASP, evt. redigere og tilrette så de sidste ting kommer på plads (det kan anførselstegn der skal rettes til apostroffer m.m.)
Avatar billede kristian21 Praktikant
19. oktober 2010 - 17:06 #4
Hej igen.

Jeg har lavet en forespørgsel i access, som ser ud som jeg ønsker (som ovenstående).

Det gav mig følgende sql-streng i asp:

Sql = "TRANSFORM Sum(viewOrderProduct.OrderProductPriceSum) AS PriceSum SELECT Format([OrderCreatedDateTime],'mm') AS monate FROM viewOrderProduct GROUP BY Format([OrderCreatedDateTime],'mm') PIVOT Format([OrderCreatedDateTime],'yyyy');"

Kan du give mig et kort hint til hvordan jeg så får det vist:

              2009      2010
Januar        0        600
Februar      450      799
Marts        530      899
etc.


På forhånd tak.
Avatar billede kristian21 Praktikant
19. oktober 2010 - 17:47 #5
Jeg har selv fundet løsningen. Jeg poster lige eksemplet her på crosstab udtræk i asp fra access.

Tak for hjælpen

    Sql = "TRANSFORM Sum(viewOrderProduct.OrderProductPriceSum) AS 'PriceSum' SELECT Format([OrderCreatedDateTime],'mm') AS Month FROM viewOrderProduct GROUP BY Format([OrderCreatedDateTime],'mm') PIVOT Format([OrderCreatedDateTime],'yyyy');"
    Set Record =  omsaetning.Execute(Sql)


%>
<TABLE BORDER="1" CELLPADDING="1
CELLSPACING="1" WIDTH="100%" >
<%

Response.Write "<TR>"
For i = 0 to Record.Fields.Count - 1
Response.Write "<TH align=""left""><FONT FACE=""ARIAL"" SIZE=""2"">" & Record.Fields(i).Name & "</FONT></TH>"
Next
Response.write "</TR>"
' -- Now output the contents of the Recordset
Record.MoveFirst
Do While Not Record.EOF
' -- output the contents
Response.Write "<TR>"
For i = 0 to Record.Fields.Count - 1
Formatnumber(i)
Response.Write "<TD><FONT FACE=""ARIAL"" SIZE=""1"">" & Record.Fields(i) & "</FONT></TD>"
Next
Response.write "</TR>"
' -- move to the next record
Record.MoveNext
Loop

Record.Close
set Record = Nothing
omsaetning.Close
set omsaetning = Nothing




%>
</TABLE>
Avatar billede kristian21 Praktikant
19. oktober 2010 - 17:48 #6
Smider du lige et svar. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester