2017-10-29 88 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; 

另外請注意,以這種形式不再被需要的羣體。