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。ここではac_id7の行が3つあるので、私のtxnテーブルは3回返されます。これを制限する方法。タイプに関係なく1つだけ返したいので

MYTxnクエリ

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

ac_id実際に何が必要かは明確ではありませんが、から1つのレコードのみを返したいようです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()、サブクエリにaを使用します。

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 に答える
0

あなたはこのようにすることができます:

個別のtxn_idを選択し、txn_hdr、ac_tabから金額を選択します。ここでtxn_ac_id = ac_id;

于 2012-10-05T11:20:51.613 に答える