2017-04-02 18 views
0

私はPOSデータのグラフを作成しようとしています。 I MySQLサブクエリの作成

SELECT DATE_FORMAT(DATE_ADD(DATE(receipts.datenew - INTERVAL (5*60 + 30) MINUTE), INTERVAL (5*60 + 30) MINUTE), '%Y-%m-%d') AS interval_start, 
CONVERT(EXTRACTVALUE(PRODUCTS.ATTRIBUTES, '/properties//entry[@key=\"maincat\"]') USING UTF8) AS MAINCAT, 
ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS), -3) AS DAYSALES 
FROM TICKETLINES, TICKETS, RECEIPTS, PRODUCTS 
WHERE TICKETLINES.PRODUCT = PRODUCTS.ID 
AND TICKETLINES.TICKET = TICKETS.ID 
AND TICKETS.ID = RECEIPTS.ID 
AND TICKETLINES.PRODUCT IS NOT NULL 
AND (receipts.datenew >= DATE_SUB(NOW(), INTERVAL 3 MONTH) AND receipts.person > 0) 
GROUP BY DATE(receipts.datenew - INTERVAL (5*60 + 30) MINUTE), MAINCAT 
ORDER BY interval_start, MAINCAT 

そして、私は次のようなデータを取得するには:私は、サブクエリが答えであると信じて、私は数字にはできませんよ

interval_start Drink  Food 
2016-12-31 45108000 36000 
2016-12-31 49791000 20400000 
2016-12-31 109000  25648000 
2017-01-01 27425000 109000 
2017-01-01 14226000 49791000 

interval_start MAINCAT DAYSALES 
2016-12-31 Drink 45108000 
2016-12-31 Food 49791000 
2016-12-31 Other 109000 
2017-01-01 Drink 14226000 
2017-01-01 Food 27425000 
2017-01-01 Other 36000 
2017-01-02 Drink 20400000 
2017-01-02 Food 25648000 
2017-01-02 Other 109000 

しかし、私はこのフォーマットを必要としますそれを出す。

ありがとうございます。

アラン

+0

期待される出力で。私はそれについての説明を含めるべきだと思います。 –

+0

私は彼が結果をピボットしたいと思うと思います – Cherif

+0

返事をありがとう、私はもっとはっきりしていたはずです。私はグラフを作成しようとしており、ベンダーは折れ線グラフを作成すると述べています。データにはこれらの列が必要です。 TICKETLINESテーブルは販売アイテムの価格を保持し、販売日付はRECEIPTSにあります。私の目標は、販売されたアイテムの種類ごとに1日あたりの売上データを取得することです。 私はこれについて完全に間違っているかもしれません。 –

答えて

0

私は次のクエリで正しい形式のデータを取得することができました - 正しい方向に私を指してくれてありがとう:私はあなたが到着したかを理解していない

SELECT DATE_FORMAT(DATE_ADD(DATE(receipts.datenew - INTERVAL (5*60 + 30) MINUTE), INTERVAL (5*60 + 30) MINUTE), '%Y-%m-%d') AS DATEofSALES, 
SUM(CASE WHEN CONVERT(EXTRACTVALUE(PRODUCTS.ATTRIBUTES, '/properties//entry[@key=\"maincat\"]') USING UTF8) = 'Drink' THEN ticketlines.price ELSE 0 END) DRINKSALES, 
SUM(CASE WHEN CONVERT(EXTRACTVALUE(PRODUCTS.ATTRIBUTES, '/properties//entry[@key=\"maincat\"]') USING UTF8) = 'Food' THEN ticketlines.price ELSE 0 END) FOODSALES, 
SUM(CASE WHEN CONVERT(EXTRACTVALUE(PRODUCTS.ATTRIBUTES, '/properties//entry[@key=\"maincat\"]') USING UTF8) = 'Other' THEN ticketlines.price ELSE 0 END) OTHERSALES 
FROM TICKETLINES, TICKETS, RECEIPTS, PRODUCTS 
WHERE TICKETLINES.PRODUCT = PRODUCTS.ID 
AND TICKETLINES.TICKET = TICKETS.ID 
AND TICKETS.ID = RECEIPTS.ID 
AND TICKETLINES.PRODUCT IS NOT NULL 
AND (receipts.datenew >= {ts '2017-02-01 06:00:00.000'} AND receipts.datenew < {ts '2017-03-31 14:28:00.000'} AND receipts.person > 0) 
GROUP BY DATE(receipts.datenew - INTERVAL (5*60 + 30) MINUTE) ORDER BY DATEofSALES