0

这是主表查询

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 

我正在使用 txn 表加入这个表ac_id。因为这里它有 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 
4

2 回答 2

0

你可以这样做:

选择不同的 txn_id,金额来自 txn_hdr , ac_tab 其中 txn_ac_id = ac_id ;

于 2012-10-05T11:20:51.613 回答
0

实际上并不清楚您需要什么,但听起来您只想ac_idAC_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
于 2012-10-04T02:02:40.500 回答