Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-表示使用CASE转换STR->INT后的总和_Sql_Rtc_Ibm Jazz - Fatal编程技术网

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

SQL-表示使用CASE转换STR->INT后的总和,sql,rtc,ibm-jazz,Sql,Rtc,Ibm Jazz,我很抱歉,这可能是一个很长的职位提前 背景: 我正在使用RationalTeamConcert RTC,它与JazzReporting服务一起存储工作项数据来创建报告。使用报表生成器工具,它允许您编写自己的查询以将数据作为表来提取,并具有自己的界面以图形的形式表示表 没有太多的图形选择;图表类型默认为计数,除非您将其指定为显示总和。为了按总和绘制图形,数据必须是数字而不是字符串。默认情况下,报表生成器假定SELECT语句中的所有变量都是字符串 我将使用的数据是一组工作项。每个工作项都与团队a、B

我很抱歉,这可能是一个很长的职位提前

背景: 我正在使用RationalTeamConcert RTC,它与JazzReporting服务一起存储工作项数据来创建报告。使用报表生成器工具,它允许您编写自己的查询以将数据作为表来提取,并具有自己的界面以图形的形式表示表

没有太多的图形选择;图表类型默认为计数,除非您将其指定为显示总和。为了按总和绘制图形,数据必须是数字而不是字符串。默认情况下,报表生成器假定SELECT语句中的所有变量都是字符串

我将使用的数据是一组工作项。每个工作项都与团队a、B关联,并具有工作估算编号count1、count2

Item # | Team | Work   |
------------------------
123    |  A   | count1 |
------------------------
124    |  A   | count2 |
------------------------
125    |  B   | count2 |
------------------------
....
问题: 由于工时估算是作为标记输入的,所以第一步是在使用SELECT将count1->1和count2->2字符串标记转换为可求和的实际数字时使用CATCH WHEN块。这就产生了一个表,其中数字1和2取代了迄今为止键入的标记good

Item # | Team | Work   |
------------------------
123    |  A   |   1    |
------------------------
124    |  A   |   2    |
------------------------
125    |  B   |   2    |
------------------------
....
问题是,我试图通过求和来绘制图形,这意味着让工具将SELECT语句中的变量标识为数字,除非出于某种原因,我在SELECT语句中声明的任何变量始终被视为字符串。该工具有一个包含当前列的表,即SELECT语句中的变量,此外,该工具还将其标识为变量类型

尝试的解决方案: 我做的第一个查询是返回每个工作项的表,其中包含其团队名称和工作估计

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    |
----------------
....
但该工具仍将数字视为字符串。然后我尝试显式地将案例转换为整数,但结果是相同的问题

...
CAST(CASE WHEN T1.TAGs='count1' THEN 1 ELSE 2 END AS Integer) AS WORK
...
同样,该工具仍然表示为字符串

当前目标: 因为我无法确认该工具是否存在潜在问题、与查询的兼容性问题等。我认为现在可以使用的是返回一个包含两行的表:每个团队的工作总和

       |Sum of 1's and 2's  |
-----------------------------
Team A |  SUM(1) + SUM(2)   |
-----------------------------
Team B |  SUM(1) + SUM(2)   |
-----------------------------
我遇到的问题是使用子查询来对数据进行求和。当我尝试 如果。。。结束为TIME2我得到一个错误,列修饰符AVG和SUM只应用于数字属性。这让我想到,我需要一个子查询,它返回案例后的列,然后求和,但我正在驶入未知水域,似乎无法使用语法

我知道在产品帮助论坛上发表这样的帖子会更好。我试着四处打听,但找不到任何帮助。我建议的返回2行/列表的解决方案应该绕过软件可能存在的任何问题,但我需要在使用案例时查询总和的帮助

我感谢你的时间和帮助

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

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

您正在寻找从string1中删除字符串eg 1的编号?字符串总是有相同的模式,例如:stringNNN?我怀疑错误在查询的不同部分。您铸造CASE表达式的方式应该有效。你能发布一个完全重现这个问题的脚本吗?@TabAlleman我已经编辑了这个帖子来显示完整的查询。我仍然怀疑这与正在使用的软件有关,并且我认为我在当前目标下提出的解决方案可以解决问题,我只是不确定在案例之后如何执行求和。当您在SSMS中单独执行此查询时,是否会出错?或者错误只发生在前端软件中?在当前目标表中,显示SUM1和SUM2;这是表示任意数量的SUMN结果,还是表示数量很少?如果是后者,您可以通过在查询中获取TEAM A/SUM1来解决它;团队A/SUM2在工作表中,并执行内部联接以获取工作表数据。然后它们将作为单独的列出现;把这些加在一起会得到总数。谢谢!!!这很好用。我得到了一个表,其中有团队a和团队B,以及我交叉验证的每个团队的总数,以确保这些数字是正确的。不幸的是,前端软件仍然将结果检测为字符串,并且在绘图时,因为它是按计数绘图,所以在团队A下仅显示1,在团队B下仅显示1,因为它将每个数字计数为1。尽管如此,我现在知道是前端导致了这个问题。再次感谢!