2012-04-04 12 views
-1

ここでは問題があります。私は同じテーブルから2回参加し、共通の価値によってグループ化したい。ここ
は(表バウチャーからの)データセットは次のとおりです。同じテーブルから2回参加する方法。同じ列でグループ化する

Date (dd/mm/yyyy) Amount 
-------------------------- 
01.01.2010   1.000 
15.01.2010   2.000 
01.03.2010   3.000 
01.03.2010   4.000 
01.05.2010   5.000 
01.01.2011   1.000 
01.02.2011   2.000 
01.04.2011   3.000 
15.04.2011   4.000 
01.05.2011   5.000 

結果は次のようにする必要があります:

Month Amount 2010 Amount 2011 
--------------------------------- 
1  3.000   1.000 
2      2.000 
3  7.000 
4      7.000 
5  5.000   5.000 

どのように私はこの問題を解決するのですか?

+0

他の質問があれば、私はSQL Serverを推測するでしょう。まだSQLの質問をしているのなら、使用しているRDBMSを教えてください。 –

+0

@Damien_The_Unbeliever私はいつも改善しています(私は願っています) - 次回はうまくいくでしょう:) – hightow

答えて

5

何かがこのような場合のために動作します:

SELECT 
    DATEPART(month,[Date]) as Month, 
    SUM(CASE WHEN DATEPART(year,[Date]) = 2010 THEN Amount END) as [Amount 2010], 
    SUM(CASE WHEN DATEPART(year,[Date]) = 2011 THEN Amount END) as [Amount 2011] 
FROM 
    Voucher 
GROUP BY 
    DATEPART(month,[Date]) as Month 

その他の状況について、あなたはPIVOTに見たいと思うかもしれません。

Dateは、実際には列名が正しくありません。

+0

TablenameはOPで書かれたバウチャーですが、大したことはありません:) – hightow

-2

あなたはこの例のように、テーブルに別の名前を付ける必要があります:

SELECT Fruit1, F1FruitName = F1.FruitName, F1FruitCost = F1.FruitCost, 
Fruit2, F2FruitName = F2.FruitName, F2FruitCost = F2.FruitCost FROM T1 
JOIN T2 F1 ON Fruit1 = F1.Fruit_ID 
JOIN T2 F2 ON Fruit2 = F2.Fruit_ID 

具象構文は、データベース・システムに依存します。これらの線に沿って

関連する問題