[英]Partition Function Count() over
我正在嘗試編寫以下代碼,以便獲得諸如WO_Count的運行總計:我必須保持WO_Count> 1之類的條件。請問有人可以幫助我嗎? 如果我將WO_Count保持在> 1的位置,則會出現以下錯誤:
ORA-00904:“ WO_COUNT”:無效的標識符00904。00000-“%s:無效的標識符”
select
Test1.id_number as Case_ID,
count(*) over ( partition by Tes2.NAME ) as WO_Count
FROM Test1
INNER JOIN Test2 ON Test1.Test12Test2=Test2.ID
您需要使用派生表或公共表表達式來嵌套查詢:
select *
from
(
select
Test1.id_number as Case_ID,
count(*) over ( partition by Tes2.NAME ) as WO_Count
FROM Test1
INNER JOIN Test2 ON Test1.Test12Test2=Test2.ID
) dt
WHERE WO_Count > 1
順便說一句,您的人數不返回連續的總數 ,而是團體人數 。
要獲得運行計數,可以使用ROW_NUMBER()
分析函數:
SELECT t1.id_number as Case_ID,
ROW_NUMBER() OVER (
PARTITION BY t2.NAME
ORDER BY ROWNUM /* or a column name */
) as WO_Count
FROM Test1 t1
INNER JOIN Test2 t2
ON ( t1.Test12Test2 = t2.ID )
(注意:您還可以使用COUNT(*) OVER ( PARTITION BY ... ORDER BY ... )
來獲取運行計數,但是當您使用*
計數行時,它們是等效的。)
如果要在第一行之后包含所有行,則:
SELECT *
FROM (
SELECT t1.id_number as Case_ID,
ROW_NUMBER() OVER (
PARTITION BY t2.NAME
ORDER BY ROWNUM /* or a column name */
) as WO_Count
FROM Test1 t1
INNER JOIN Test2 t2
ON ( t1.Test12Test2 = t2.ID )
)
WHERE WO_Count > 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.