我想inlude的總數爲在查詢中的列:得到一組的總數由查詢
SELECT un.user, un.role
FROM [Unique] un group by user, role;
在此查詢我有2列,但我想添加第三列作爲在上面的查詢中計算的總行數。
我想inlude的總數爲在查詢中的列:得到一組的總數由查詢
SELECT un.user, un.role
FROM [Unique] un group by user, role;
在此查詢我有2列,但我想添加第三列作爲在上面的查詢中計算的總行數。
這下的MS Access 作品(並且是非常相似,將Oracle和其他數據庫下工作):
SELECT
un.user,
un.role,
(
SELECT COUNT(*)
FROM (
SELECT un1.user, un1.role
FROM [Unique] un1 group by user, role
)
)
FROM [Unique] un group by user, role;
下面是實際的Oracle語法:
SELECT
un."user",
un.role,
(
SELECT COUNT(*)
FROM (
SELECT un1."user", un1.role
FROM "Unique" un1 group by "user", role
)
)
FROM "Unique" un group by "user", role;
對於參考,這裏是SQL Server特定的解決方案,使用CTE:
WITH Q([user], role) AS (
SELECT un.[user], un.role
FROM [Unique] un group by [user], role
)
SELECT *, (SELECT COUNT(*) FROM Q)
FROM Q
SELECT un.user, un.role,
(select count(*) from
(Select user, role from [unique] group by user, role)) as CNT
FROM [Unique] un
group by user, role;
雖然這將需要重新計算每個roweach時間...有可能有更好的方法。
我堅持我上面的評論,你可以從記錄集中得到這個,但通過大多數開發語言。所以讓它在查詢結果中返回而不是查看元數據是很奇怪的。
Select un.user, un.role
From [unique] un
group by grouping sets ((user, role),())
如果COUNT(*)不工作(和它不爲每個數據庫工作),你可以嘗試COUNT(0)代替。它比計算主鍵快。您可能期望COUNT(0)爲1,但實際上它總是返回行數。至少它在我曾經使用的每個數據庫上都有。當然,您可以使用任何其他常數而不是0 - 除了空值之外。
COUNT(un.user)? – Joe
不知道具體情況,我的建議是以另一種方式獲取數據。大多數數據訪問技術都包含爲您提供結果集中返回的行數的功能。 –