2016-05-20 9 views
0

複数のベンダーにチェックを合計して、ベンダー名を与えるテーブルを作成し、毎月の合計に1つずつ12個の列を作成します。複数のレコードを月ごとに合計する

CHECK TABLE: 
Vendor    Trans. Date Amount 
Able Mfg   2008-01-07  227.32 
Acme Wolf Tails 2008-03-01  12.00 
Able Mfg   2008-01-23  142.50 

NEW TABLE: 
Vendor   Jan  Feb  Mar  Apr May ... 
Able Mfg  369.82  0  0  0  0 
Acme Wolf Tails     12.00 

ここまではこれまでのことです。私は、「サブクエリは複数行を返す」、エラーが発生します。

select 
    `Pay To`,  
    MONTH(`Transaction Date`) AS `Trans Month`, 
    (SELECT 
      SUM(`Charge Amount`) 
     FROM `Check Table` 
     WHERE MONTH(`Transaction Date`) = 1 
     GROUP BY `Pay To`) as `Jan`, 
    (SELECT 
      SUM(`Charge Amount`) 
     FROM `Check Table` 
     WHERE MONTH(`Transaction Date`) = 2 
     GROUP BY `Pay To`) as `Feb`, 
    (SELECT 
      SUM(`Charge Amount`) 
     FROM `Check Table` 
     WHERE MONTH(`Transaction Date`) = 3 
     GROUP BY `Pay To`) as `Mar` 
FROM `Check table` 
WHERE `Charge Amount` != 0 
GROUP BY `Pay To` 
ORDER BY `Pay To`; 

答えて

0

チャンダンを参照してください。ページの右側に回答が見つかりました:

SELECT 
    `Pay To`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '01' THEN `Charge Amount` END) AS `Jan`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '02' THEN `Charge Amount` END) AS `Feb`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '03' THEN `Charge Amount` END) AS `Mar`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '04' THEN `Charge Amount` END) AS `Jan`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '05' THEN `Charge Amount` END) AS `May`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '06' THEN `Charge Amount` END) AS `Jun`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '07' THEN `Charge Amount` END) AS `Jul`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '08' THEN `Charge Amount` END) AS `Aug`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '09' THEN `Charge Amount` END) AS `Sep`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '10' THEN `Charge Amount` END) AS `Oct`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '11' THEN `Charge Amount` END) AS `Nov`, 
    SUM(CASE WHEN MONTH(`Transaction Date`) = '12' THEN `Charge Amount` END) AS `Dec` 
FROM `Check Table` 
GROUP BY `Pay To`; 

ありがとうございます。

関連する問題