SELECT * FROM
(
SELECT * , COUNT(*) OVER (PARTITION BY client order by account) cnt
FROM yourtable
)r
WHERE cnt = 1
SELECT y.* FROM
(
SELECT [Client Number] FROM
(
SELECT [Client Number] , COUNT(*) cnt
FROM yourtable
GROUP BY [Client Number]
)r
WHERE cnt = 1
)o INNER JOIN yourtable y ON O.[Client Number] = y.[Client Number]
/*------------------------
OUTPUT
------------------------*/
Client Number Account Number Balance
------------- -------------- -----------
C2 A65456 30
(1 row(s) affected)
WITH CTE AS
(
SELECT 'C1' c ,'A123' a , 100 b
FROM DUAL UNION ALL
SELECT 'C1','A546',50 FROM DUAL UNION ALL
SELECT 'C2','A65456',30 FROM DUAL
)
,CTE1 AS
(
SELECT c FROM
(SELECT c , COUNT(*) cnt
FROM CTE
GROUP BY c) WHERE cnt = 1
)
SELECT k1.* FROM CTE1 k INNER JOIN CTE k1 ON k1.c = k.c
C A B
1 C2 A65456 30
create table mytable (
Client_Number varchar2(4000),
Account_Number varchar2(4000),
Balance number
);
/
insert into mytable (Client_Number, Account_Number, Balance)
select 'C1', 'A123', 100 from dual union all
select 'C1', 'A546', 50 from dual union all
select 'C2', 'A65456', 30 from dual;
/
select a.* from mytable a
inner join (
select Client_Number from mytable group by Client_Number having count(*) = 1
) b on a.Client_Number = b.Client_Number
WITH CTE AS
(
SELECT 'C1' c ,'A123' a , 100 b
FROM DUAL UNION ALL
SELECT 'C1','A546',50 FROM DUAL UNION ALL
SELECT 'C2','A65456',30 FROM DUAL
)
SELECT c clientNumber ,a accountNumber , b Balance
FROM
(
SELECT c,b,a , COUNT(*) OVER(PARTITION BY c) as cnt FROM CTE
)WHERE cnt = 1
CLIENTNUMBER ACCOUNTNUMBER BALANCE
1 C2 A65456 30
select * from yourtable where clientnumber in
(select clientnumber from yourtable group by clientnumber having count(*) = 1)
and what database are you using?