webForumDet fria alternativet

Statistik för tre månader

2 svar · 371 visningar · startad av Troxy

TroxyMedlem sedan mars 20041 505 inlägg
#1

Hej!
Jag har fått i uppgift att bygga en SQL-fråga som visar antalet köp per artikel över tre olika månader.

Databasen är en MSSQL...
Säg exempelvis att jag har två tabeller som ser ut såhär:

tbl_articles
+---------+------------+
| article | title      |
+---------+------------+
| 25      | DVD-film   |
| 32      | Videoband  |
| 43      | Chips      |
| 51      | Popcorn    |
+---------+------------+

tbl_orders
+---------+------------+
| article | order      |
+---------+------------+
| 32      | 2006-05-02 |
| 25      | 2006-05-17 |
| 43      | 2006-05-22 |
| 51      | 2006-05-23 |
| 51      | 2006-05-27 |
| 43      | 2006-06-11 |
| 32      | 2006-06-14 |
| 32      | 2006-06-19 |
| 43      | 2006-06-21 |
| 32      | 2006-07-25 |
| 51      | 2006-07-13 |
| 25      | 2006-07-13 |
| 32      | 2006-07-25 |
+---------+------------+

Sen så vill jag få ut statistik som ser ut såhär:

+------------+---------+---------+---------+
| title      | 2006-05 | 2006-06 | 2006-07 |
+------------+---------+---------+---------+
| DVD-film   | 1       | 0       | 1       |
| Videoband  | 1       | 2       | 2       |
| Chips      | 1       | 2       | 0       |
| Popcorn    | 2       | 0       | 1       |
+------------+---------+---------+---------+

De månader som ska visas får man själv ange i SQL-frågan.
Jag misstänker att det här blir väldigt krångligt...

pulseMedlem sedan nov. 200373 inlägg
#2

Har bara kunnat göra en lösning i MySQL. Tror inte du kan använda date_format i MSSQL utan motsvarigheten heter datepart eller liknande.

select a.title,
sum(case when date_format(o.order, '%Y-%m') = '2006-05' then 1 else 0 end) '2006-05',
sum(case when date_format(o.order, '%Y-%m') = '2006-06' then 1 else 0 end) '2006-06',
sum(case when date_format(o.order, '%Y-%m') = '2006-07' then 1 else 0 end) '2006-07'
from tbl_orders o join tbl_articles a on a.article = o.article
group by a.title
TroxyMedlem sedan mars 20041 505 inlägg
#3

Tack så mycket, det där kan vara till stor hjälp.

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