我已經包含了產品的表的數據庫命令是這樣的:SQLITE - 轉置行轉換成列正確
order_id | prod_code | prod_color | size | quantity |
-----------------------------------------------------
1 SHIRT 001 S 10
1 SHIRT 001 M 7
1 SHIRT 001 L 8
1 SHIRT 001 XL 1
1 SHIRT 995 S 2
1 SHIRT 995 M 1
1 SHIRT 995 L 0
1 SHIRT 995 XL 1
2 PANTS ....
和產品的價格表如下:
prod_code | prod_color | price | currency
-----------------------------------------
SHIRT 001 10 EUR
SHIRT 001 9 USD
SHIRT 001 50 YEN
SHIRT 001 15 RUB
SHIRT 995 20 EUR
SHIRT 995 29 USD
SHIRT 995 100 YEN
SHIRT 995 45 RUB
PANTS ....
什麼,我想想獲得,是(通過ORDER_ID過濾爲簡單起見)這樣的觀點:
order_id | prod_code | prod_color | size | quantity | EUR | USD | YEN | RUB
---------------------------------------------------------------------------
1 SHIRT 001 S 10 10 9 50 15
1 SHIRT 001 M 7 10 9 50 15
1 SHIRT 001 L 8 10 9 50 15
1 SHIRT 001 XL 1 10 9 50 15
1 SHIRT 995 S 2 20 29 100 45
1 SHIRT 995 M 1 20 29 100 45
1 SHIRT 995 L 0 20 29 100 45
1 SHIRT 995 XL 1 20 29 100 45
我已經通過網絡看並通過SO,我發現THIS QUESTION,顯示我正是我需要做的,但我認爲有一些修改...
我tryed到數據庫上運行此查詢:
SELECT o.order_id, o.prod_code, o.prod_color, o.size, o.quantity,
MAX(CASE WHEN p.currency = 'EUR' THEN p.price END) AS 'EUR',
MAX(CASE WHEN p.currency = 'USD' THEN p.price END) AS 'USD',
MAX(CASE WHEN p.currency = 'YEN' THEN p.price END) AS 'YEN',
MAX(CASE WHEN p.currency = 'RUB' THEN p.price END) AS 'RUB'
FROM products_order o JOIN products_prices p ON o.prod_code = p.prod_code
WHERE o.order_id = 1
GROUP BY o.order_id, o.prod_code, o.prod_color, o.size, o.quantity
將返回在價格列中,對於每一行,在整列中找到最大值:所以對於[product_color = 001]和[product_color = 995],我的價格等於20歐元(當001價格便宜時,只有10歐元!)
我嘗試過也沒有MAX,但它給了我一行的每個價格,留下很多單元格爲空(然後我明白什麼是用於MAX: d)。
你知道一種方法來做我想做的事嗎?我如何在一個prod_color中使用MAX,而不是通過每個prod_color?
我希望你能理解我寫的,在此先感謝,任何幫助表示感謝。
(如果你需要的東西解釋的更清楚,只問和我儘快回覆會再次
感謝,問候
SQLFiddle:http://sqlfiddle.com/#!5/fadad – biziclop 2012-08-03 17:24:12