这是主表查询
Select *
from AC_TAB
where AC_ID = 7 ;
AC_PK AC_ID TYPE STATUS INS_DATE VALID
102 7 0 0 3/21/2012 3:35:08 PM 0
103 7 1 0 3/21/2012 3:35:08 PM
104 7 2 1 3/21/2012 3:35:08 PM
我使用ac_id
使用txn表加入此表。因为这里有3行ac_id 7,我的txn表返回3次。如何限制这一点。因为我想只返回一个而不管类型
我的Txn查询
Select txn_id, amount
from txn_hdr , ac_tab
where txn_ac_id = ac_id ;
txn_id amount
1 200
1 200
3 100
3 100
答案 0 :(得分:0)
实际上并不清楚您需要什么,但听起来您只想从ac_id
每AC_TAB
返回一条记录。如果是这样,那么有几种方法可以做到这一点。
使用子查询:
select *
from
(
select max(INS_DATE) INS_DATE, AC_ID
from ac_tab
group by AC_ID
) a
inner join txn_hdr t
on a.ac_id = t.ac_id;
或CTE使用row_number()
:
;with cte as
(
select a.ins_date, a.ac_id, t.amount, row_number()
over(partition by a.ac_id order by a.ins_date desc) rn
from ac_tab a
inner join txn_hdr t
on a.ac_id = t.ac_id
)
select *
from cte
where rn = 1;
或者在子查询中使用row_number()
:
select *
from
(
select a.ins_date, a.ac_id, t.amount, row_number()
over(partition by a.ac_id order by a.ins_date desc) rn
from ac_tab a
inner join txn_hdr t
on a.ac_id = t.ac_id
) x
where rn = 1
答案 1 :(得分:0)
你可以这样做:
选择不同的txn_id,金额 来自txn_hdr,ac_tab 其中txn_ac_id = ac_id;