Originator_Acc_ID | Transaction_Amount
-----------------------------------------------
001 | 10000000
001 | 20000000
003 | 1000
002 | 60000000
我希望Originator_ID仅用于100 000以上的交易,而不使用having子句的交易超过1个。
答案 0 :(得分:0)
如果您只想知道具有多个事务的Originator_Acc_ID
,那么您可以使用row_number:
select Originator_Acc_ID, Transaction_Amount
from
(
select Originator_Acc_ID, Transaction_Amount,
row_number() over(partition by Originator_Acc_ID order by Originator_Acc_ID) rn
from yourtable
--where Transaction_Amount > 100000
) src
where rn > 1
如果他们的row_number()
大于1,则意味着他们有多个交易。以上将返回所有具有多个的人。如果您只想要一个包含多个交易的帐户列表,那么您可以使用:
select distinct Originator_Acc_ID
from
(
select Originator_Acc_ID, Transaction_Amount,
row_number() over(partition by Originator_Acc_ID order by Originator_Acc_ID) rn
from yourtable
--where Transaction_Amount > 100000
) src
where rn > 1
甚至:
select Originator_Acc_ID
from
(
select Originator_Acc_ID, Transaction_Amount,
row_number() over(partition by Originator_Acc_ID order by Originator_Acc_ID) rn
from yourtable
--where Transaction_Amount > 100000
) src
where rn = 2
答案 1 :(得分:0)
可能有更好的方法,但这似乎有效;
;WITH MyTable AS
(
SELECT Originator_Acc_ID = '001'
,Transaction_Amount = 10000000
UNION ALL
SELECT '001', 20000000
UNION ALL
SELECT '003', 1000
UNION ALL
SELECT '002', 60000000
)
,CTE AS
(
SELECT Originator_Acc_ID
,Transaction_Amount
,TxnPerOrig = COUNT(*) OVER (PARTITION BY Originator_Acc_ID)
FROM MyTable
)
SELECT DISTINCT Originator_Acc_ID
FROM CTE
WHERE Transaction_Amount > 100000
AND TxnPerOrig > 1