如何从同一个表加入两次。按同一列分组

时间:2012-04-04 06:06:03

标签: sql sql-server-2008

我这里有一个小问题。我想从同一个表中加入两次,并按一个共同的值进行分组 这是数据集(来自表格凭证):

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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是一个非常糟糕的专栏名称。

答案 1 :(得分:-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

具体语法取决于您的数据库系统。