2014-10-17 133 views
0

我有一个SQL Server ALM项目。我需要一个提取所有需求的查询,其完整路径可以达到四个级别,包括需求名称。针对HP ALM的SQL查询获取完整需求路径

因为我在SQL Server上,所以我无法使用Oracle提供的工具(这很容易)。查询必须从ALM中运行。

所有我到目前为止是这样的:

SELECT distinct RQ_REQ_ID AS "Int Req ID", 
REQ.RQ_REQ_NAME AS "Req ID", 
REQ.RQ_REQ_REVIEWED as "Req Status", 
REQ.RQ_REQ_STATUS AS "Req Coverage" 
FROM REQ 
WHERE RQ_TYPE_ID != 1 
ORDER BY RQ_REQ_NAME 

谁能请完成语句,以便将包含完整路径的要求?

感谢

回答

0

好吧,我在工作,其假期,我已经完成了我的项目,是的,我已经看到了这个作为Oracle查询,并有一些简单,但我在SQL工作了一点点。这是一个完全的黑客查询和它的书面的甲骨文,但概念是相同的。

SELECT distinct RQ_REQ_ID AS "Int Req ID", 
r.RQ_REQ_NAME AS "Req ID", 
r.RQ_REQ_REVIEWED as "Req Status", 
r.RQ_REQ_STATUS AS "Req Coverage", 
r.rq_req_path, 
(select rq_req_name from req where rq_req_path = substr(r.rq_req_path, 1, 3)) 
|| '/' || 
(select rq_req_name from req where rq_req_path = substr(r.rq_req_path, 1, 6)) 
|| '/' || 
(select rq_req_name from req where rq_req_path = substr(r.rq_req_path, 1, 9)) 
FROM REQ r 
WHERE RQ_TYPE_ID != 1 
ORDER BY RQ_REQ_NAME 

你会想&,而不是||并且您可能必须在退货时进行一些转换/转换操作。我认为这样做的原因是爬行rq_req_path和迭代是有点...在SQL Server中皱起了眉头。

我做了什么被发现RQ_REQ_PATH的最大长度,只是添加了n个连接。之后,将很容易去除额外的/。

我完全肯定有一个更好,更干净的方式做到这一点,但如果其他人在看这个,这应该是一个起点,如果它的一次性报告,这工作正常。

+0

嘿,谢谢你提供的代码。但是,我无法运行它,因为ALM显然不识别substr关键字。 (它不象其他的那样由蓝色文本标识)。查询是否意味着从ALM内运行? – kelstrup 2014-12-19 12:05:12

+0

是啊,[在这里试试sql server的子串](http://msdn.microsoft.com/en-us/library/ms187748.aspx)。这在我的环境中运行,这是oracle。不幸的是,我没有SQL Server环境来测试。 概念仍然是一样的,获取最大长度,知道它在3秒内。再次,彻底破解。可以找出一个更好的方法,不要向任何DBA显示这个,否则他们可能会对你大喊大声。 – 2015-01-05 15:07:04