根据条件创建案例和总和值

时间:2019-03-11 22:05:31

标签: sql-server

我正在寻找一种方法来重命名case语句中的值,然后将这些值一起作为总和。似乎所有解释都集中在creating the conditionsetting criteriasumming上。我设想查询应该看起来像 这个:

SELECT 
X, 
Y,
CASE Z
WHEN '1' THEN 'A'
WHEN '2' THEN 'B'
WHEN '3' THEN 'C'
WHEN '4' THEN 'D'
END +
SUM(CASE WHEN Z='1' OR Z='2' THEN 'I' END) +
SUM(CASE WHEN Z='3' OR Z='4' THEN 'J' END) AS Letters
FROM FOO

我可能会使其变得比必要的更加困难。我真正需要的只是将1中的2Z分组为I中的34Z分组为J,这样I将是12所有情况的总和,而J将是{{1 }}和3,最好在同一列中。任何帮助将不胜感激。

根据社区的要求,输入数据应如下所示:

4

结果应创建一个新类别,该类别将INSERT INTO FOO (Z, Values) VALUES (1,3), (2,6), (3,10), (4,20), (5,1), (1,9), (2,12), (3,30) (4,40) (5,2); 下的12下的值与{{1}下的I3下的值相加{1}}。因此:

4

J是排除条件。

1 个答案:

答案 0 :(得分:1)

<servlet>
    <display-name>GetServlet</display-name>
    <servlet-name>GetServlet</servlet-name>
    <servlet-class>mypackage.GetServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>GetServlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
  </servlet-mapping>

或更短

SELECT CASE [Z]
            WHEN 1 THEN 'I'
            WHEN 2 THEN 'I'
            WHEN 3 THEN 'J'
            WHEN 4 THEN 'J'
       END [Letters]
       ,SUM([Values]) [Values]
FROM FOO
GROUP BY CASE [Z]
              WHEN 1 THEN 'I'
              WHEN 2 THEN 'I'
              WHEN 3 THEN 'J'
              WHEN 4 THEN 'J'
         END

DBFiddle Demo