0
Table_A

A_id          
1     



Tale_B
B_id       A_id
1            1
2            1
3            1

Table_C

B_id      Process_date
1   20130101 12:20:01
2   20130101 12:10:01
3   20130101 13:00:01

Table_C タイミング ウィンドウに基づいて Table_A A_id の参照を使用して Table_C から最大の process_date を取得する方法。 id は 1、process_date は 12:20:01

4

2 に答える 2

1

以下を取得するサブクエリを使用できますmax(process_date)

select c1.b_id,
  c2.MaxDate
from table_a a
inner join table_b b
  on a.a_id = b.a_id
inner join table_c c1
  on b.b_id = c1.b_id
inner join
(
  select max(process_date) MaxDate
  from table_c
) c2
  on c1.process_date = c2.maxdate;

デモで SQL Fiddle を参照してください

または、次を使用できますrow_number()

select b_id, process_date
from 
(
  select c1.b_id,
    c1.process_date,
    row_number() over(partition by a.a_id order by c1.process_date desc) rn
  from table_a a
  inner join table_b b
    on a.a_id = b.a_id
  inner join table_c c1
    on b.b_id = c1.b_id
) 
where rn = 1

デモで SQL Fiddle を参照してください

于 2013-03-05T21:36:03.880 に答える
0

このクエリは、次の参照を使用して、process_dateそれぞれの最大値を取得する必要があります。B_idTable_A

SELECT c.B_id, MAX(Process_date)
FROM Table_C c
INNER JOIN Table_B b 
    ON b.B_id = c.B_id
INNER JOIN Table_A a
    ON a.A_ID = b.A_id
GROUP BY c.B_id

への参照を持つすべての B_id の最大値が必要な場合c.B_idは、選択から を削除するだけです。GROUP BYprocess_dateTable_A

SQL フィドル

于 2013-03-05T21:44:00.027 に答える