2014-02-19 28 views
0

我有这样的代码:如何计算SQL中临时列的总和?

SELECT 
    ID, 
    name, 
    result, 
    CASE 
     WHEN result = 1 THEN 100 
     WHEN result = 2 THEN 80 
     ELSE NULL 
    END AS TemporaryColumn 
FROM MyTable 

这是表:

| ID | Name | result | TemporaryColumn | 
---------------------------------------- 
| 1 | A | 1 |  100  | 
---------------------------------------- 
| 2 | B | 1 |  100  | 
---------------------------------------- 
| 3 | C | 2 |  80   | 
---------------------------------------- 
| 1 | A | 2 |  80   | 
---------------------------------------- 
| 2 | B | 1 |  100  | 
---------------------------------------- 
| 3 | C | 2 |  80   | 
---------------------------------------- 

我要找到每一个ID的总和(),和表应该是这样的:

| ID | Name | result | TemporaryColumn | 
---------------------------------------- 
| 1 | A | 1 |  180  | 
---------------------------------------- 
| 2 | B | 1 |  200  | 
---------------------------------------- 
| 3 | C | 2 |  160  | 
---------------------------------------- 

我该如何查询?

回答

1

如何像

SELECT 
    ID, 
    name, 
    result, 
    SUM(
     CASE 
      WHEN result = 1 THEN 100 
      WHEN result = 2 THEN 80 
      ELSE NULL 
     END 
    ) AS TemporaryColumn 
FROM MyTable 
GROUP BY ID, 
    name 

不要ethough的result列不能保证从我可以告诉,这是不是唯一的,可能应该从选择列表中排除。

,如果是这样的话,你将不得不使用

SELECT 
    ID, 
    name, 
    SUM(
     CASE 
      WHEN result = 1 THEN 100 
      WHEN result = 2 THEN 80 
      ELSE NULL 
     END 
    ) AS TemporaryColumn 
FROM MyTable 
GROUP BY ID, 
    name 
+0

感谢你非常非常astander。 – user3287124