2017-10-29 59 views
1

我有这个疑问,它返回10行:SQL服务器 - 在选择选择不工作

SELECT 
    substring(testcase_name, 4, len(testcase_name)) 
FROM 
    TEST_RESULTS 
WHERE 
    test_run_id = 48 
GROUP BY 
    substring(testcase_name,4,len(testcase_name)) 

我需要计算这些行(需要返回数字 - 在这种情况下,10)。我需要

SELECT count(*) FROM (my query) 

但在SQL Server中这是行不通的。我在互联网上搜索,我试图像SELECT count(\*) FROM (my query) t ..我命名返回表“T” ..但仍然没有工作对我来说..

错误消息:

没有列名了为't'的第1列指定。

也许问题可能是我用substring修改数据?

回答

1

您需要添加别名表达:

SELECT COUNT(*) 
FROM (SELECT substring(testcase_name,4,len(testcase_name)) 
     FROM TEST_RESULTS 
     WHERE test_run_id = 48 
     GROUP BY substring(testcase_name,4,len(testcase_name)) 
    ) t(s); -- adding column alias 
+1

非常感谢你帮助我! :)所以我只需要命名列的权利? – Horhc

+0

@Horhc正是:) – lad2025

+0

我明白了,谢谢,祝你有美好的一天!) – Horhc

0

其他的答案会给你的分组的记录数。什么,但是你可能需要的是每组的次数,你可以做像这样:

WITH cte AS 
(
    SELECT substring(testcase_name,4,len(testcase_name)) AS x 
    FROM TEST_RESULTS 
    WHERE test_run_id = 48 
) 
SELECT x, COUNT(*) AS CountPerX 
FROM cte 
GROUP BY x; 

x CountPerX 
-------------- 
Foo 123 
Bar 234 

另一种方式返回(你原来的问题)“组数”,是通过COUNT DISTINCT

SELECT COUNT(DISTINCT substring(testcase_name,4,len(testcase_name))) AS CountGroups 
FROM TEST_RESULTS 
WHERE test_run_id = 48; 
0

这也是使用COUNT DISTINCT,例如一个机会:

SELECT COUNT(distinct substring(testcase_name,4,len(testcase_name))) 
FROM TEST_RESULTS 
WHERE test_run_id = 48; 

另外请注意,以这种形式不再被需要的群体。