2011-11-28 102 views
7
計算字段

我寫這樣的組由SQL

CASE 
       WHEN [col1] = 's' THEN '1' 
       WHEN [col1] = 't' THEN '2' 
       WHEN [col1] = 'u' THEN '3' 
       WHEN [col2] = 'v' THEN '4' 
....... 
END AS product, 
SUM(col3) 
FROM dbo.TableA 

我的產品要組一個查詢? 如何做到這一點?

回答

10

你需要做的是使用你的別名CASE列的子查詢。將您的查詢作爲子查詢,您可以group by您的別名列。

select product 
from 
(
    select 
    CASE 
     WHEN [col1] = 's' THEN '1' 
     WHEN [col1] = 't' THEN '2' 
     WHEN [col1] = 'u' THEN '3' 
     WHEN [col2] = 'v' THEN '4' 
    END AS product, 
    SUM(col3) as Col3Sum 
    FROM dbo.TableA 
) a 
group by product 
+0

你的答案me..thnx – Yogesh

+0

這適用於SUM的工作,但它會打破數(不同COL4)。 – SarekOfVulcan

6

你需要在你的Group ByCASE爲好。不能使用別名在 GROUP BY

SELECT yourColumn, otherColumn 
    , CASE 
     WHEN [col1] = 's' THEN '1' 
     WHEN [col1] = 't' THEN '2' 
     WHEN [col1] = 'u' THEN '3' 
     WHEN [col2] = 'v' THEN '4' 
    END AS Product 
    , anotherColumn 
FROM yourTable 
GROUP BY CASE 
      WHEN [col1] = 's' THEN '1' 
      WHEN [col1] = 't' THEN '2' 
      WHEN [col1] = 'u' THEN '3' 
      WHEN [col2] = 'v' THEN '4' 
     END 
+0

你是對的..但其他答案爲我工作! – Yogesh

+0

@AdamWenger我試過這個解決方案,但對我來說運行速度非常慢。 –