SQL - 表示使用 CASE 转换 STR -> INT 后的 SUM

SQL - Representing SUM's after using CASE to transform STR -> INT

很抱歉,可能会提前post。

背景:
我正在使用 Rational Team Concert (RTC),它与 ​​Jazz Reporting Service 一起存储工作项数据来创建报告。使用 Report Builder 工具,它允许您编写自己的查询以将数据提取为 table,并有自己的界面将 table 表示为图形。

绘图选项不多;图表类型默认为计数,除非您指定它显示总和。为了按总和绘制图形,数据必须是数字而不是字符串。默认情况下,Report Builder 假定 SELECT 语句中的所有变量都是字符串。

我将使用的数据是一堆工作项。每个工作项都与一个团队 (A, B) 相关联,并且有一个工作估算编号 (count1, count2)。

Item # | Team | Work   |
------------------------
123    |  A   | count1 |
------------------------
124    |  A   | count2 |
------------------------
125    |  B   | count2 |
------------------------
....

问题:
由于工作估计是作为标签输入的,因此第一步是在使用 SELECT 转换 count1 -> 1 和 count2 -> 2 时使用 CATCH WHEN 块(字符串标签到实际数字,可以是总结)。这导致 table 用数字 1 和 2 代替键入的标签(到目前为止还不错)。

Item # | Team | Work   |
------------------------
123    |  A   |   1    |
------------------------
124    |  A   |   2    |
------------------------
125    |  B   |   2    |
------------------------
....

问题是我正在尝试按总和绘制图形,这意味着让工具将 SELECT 语句中的变量识别为数字,但出于某种原因我在 [=70] 中声明的任何变量除外=] 语句始终被视为字符串(该工具具有当前列的 table,即 SELECT 中的变量,以及该工具将其标识为其变量类型)。

尝试的解决方案
我做的第一个查询是 return 每个工作项的 table 及其团队名称和工作估计

SELECT T1.NAME,
       (CASE WHEN T1.TAGs='count1' THEN 1 ELSE 2 END) AS WORK
FROM RIDW.VW_REQUEST T1
WHERE T1.PROJECT_ID = 73

这导致

 Team | Work   |
----------------
 A    |   1    |
----------------
 A    |   2    |
----------------
 B    |   2    |
----------------
....

但该工具仍然将数字视为字符串。然后我尝试将 CASE 显式转换为整数,但导致了同样的问题

...
CAST(CASE WHEN T1.TAGs='count1' THEN 1 ELSE 2 END AS Integer) AS WORK
...

工具仍然表示为字符串。

当前目标
因为我无法确认该工具是否存在潜在问题,与查询的兼容性问题等。我认为现在可以使用的是 return a table with 2 rows:每个工作的总和团队

       |Sum of 1's and 2's  |
-----------------------------
Team A |  SUM(1) + SUM(2)   |
-----------------------------
Team B |  SUM(1) + SUM(2)   |
-----------------------------

我遇到的问题是使用子查询来使用 SUM 对数据求和。当我尝试 SUM(CASE WHEN ... END) AS TIME2 我得到一个错误 "Column modifiers AVG and SUM apply only to number attributes"。这让我想到我需要一个子查询,其中 return 是 CASE 之后的列,然后对其求和,但我正在驶入未知的水域,似乎无法使语法正常工作。

我知道像这样的 post 在产品帮助论坛上会更好。我试着四处打听,但得不到任何帮助。我提出的 returning the 2 row/column table 的解决方案应该绕过软件可能存在的任何问题,但我需要帮助在使用案例时子查询 SUM。

感谢您抽出时间提供帮助!

编辑 1:
下面是完整的查询代码,它正确地执行了 CASE,但仍然导致工具解释的类型:

SELECT  
   T1.Name,
   CAST(CASE WHEN T1.TAGS='|release_points_1|' THEN 1 ELSE (CASE WHEN T1.TAGS='|release_points_2|' THEN 2 ELSE 0 END) END AS Integer) AS TAG,
FROM RIDW.VW_REQUEST T1
WHERE T1.PROJECT_ID = 73 
AND
(T1.ISSOFTDELETED = 0) AND
(T1.REQUEST_ID <> -1 AND T1.REQUEST_ID IS NOT NULL

对您当前查询的这个小调整应该有效:

SELECT  
   T1.Name,
   SUM(CAST(CASE WHEN T1.TAGS='|release_points_1|' THEN 1 ELSE (CASE WHEN T1.TAGS='|release_points_2|' THEN 2 ELSE 0 END) END AS Integer)) AS TAG,
FROM RIDW.VW_REQUEST T1
WHERE T1.PROJECT_ID = 73 
AND
(T1.ISSOFTDELETED = 0) AND
(T1.REQUEST_ID <> -1 AND T1.REQUEST_ID IS NOT NULL
GROUP BY T1.Name