我想爲我的應用程序提前報告。現在我遇到了一些疑問。1年每月總結與份額百分比
下面是詳細信息:
table_product
id | name
-----+---------
1 | Book
2 | Pen
3 | Ruler
4 | Calendar
5 | Scissors
table_event
id | name
-----+---------
1 | Launching
2 | Sale
3 | Roadshow
4 | Presentation
5 | Normal
table_transaction
---+------------+-------+-----------+---------+-----------+---------+-----------+---------+----------+
id | date | event | product_1 | share_1 | product_2 | share_2 | product_3 | share_3 | amount |
---+------------+-------+-----------+---------+-----------+---------+-----------+---------+----------+
1 | 2013-01-12 | 1 | 3 | 50 | 2 | 50 | | | 5000 |
2 | 2013-02-13 | 3 | 2 | 50 | 1 | 25 | 4 | 25 | 10000 |
3 | 2013-01-13 | 5 | 5 | 50 | 4 | 50 | | | 7000 |
4 | 2013-04-13 | 2 | 1 | 100 | | | | | 5000 |
---+------------+-------+-----------+---------+-----------+---------+-----------+---------+----------+
我想顯示是這樣
--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
Product Name | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
Book | | 2500 | | 5000 | | | | | | | | |
Pen | 2500 | 5000 | | | | | | | | | | |
Ruler | 2500 | | | | | | | | | | | |
Calendar | 3500 | 2500 | | | | | | | | | | |
Scissors | 3500 | | | | | | | | | | | |
--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
我曾嘗試: 我成功生成了事件名稱的輸出與下面的查詢
SELECT t1.name as sort_name,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 1, t2.amount, 0)) as total_jan,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 2, t2.amount, 0)) as total_feb,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 3, t2.amount, 0)) as total_mar,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 4, t2.amount, 0)) as total_apr,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 5, t2.amount, 0)) as total_may,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 6, t2.amount, 0)) as total_jun,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 7, t2.amount, 0)) as total_jul,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 8, t2.amount, 0)) as total_aug,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 9, t2.amount, 0)) as total_sep,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 10, t2.amount, 0)) as total_oct,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 11, t2.amount, 0)) as total_nov,
sum(IF(YEAR(t2.date) = 2013 AND MONTH(t2.date) = 12, t2.amount, 0)) as total_dec,
sum(IF(YEAR(t2.date) = 2013, t2.amount, 0)) as event_total
FROM events t1
LEFT JOIN transactions t2 ON t2.event_id = t1.id
GROUP BY sort_name
分組但我沒有任何想法的產品做組。我試過玩union,但仍然返回一個SQL語法錯誤。
剛剛從'table_product',而不是'活動選擇'(你沒告訴我們什麼?) – 2013-03-15 08:32:02
我試過了。但是由於每筆交易可以有多於一種產品,並且每種產品都有各自的份額,所以每筆交易只能選擇一種產品。 – otezz 2013-03-15 08:39:25
啊......我明白了。有一個product_1,share_1,product_2,share_2等 – 2013-03-15 08:51:59