1

SELECT ステートメントの作成を手伝ってください。私はこれらの2つのテーブルを持っています:

Table1                 Table2
----------------       ------------------------------------------------
ID  |  PName   |       |  ID  | NameID  |   DateActive  | HoursActive |
----------------       ------------------------------------------------
1   |  Neil    |       |  1   |    1    |   8/2/2013    |      3      |
2   |  Mark    |       |  2   |    1    |   8/3/2013    |      4      |
3   |  Onin    |       |  3   |    2    |   8/2/2013    |      2      |
----------------       |  4   |    2    |   8/6/2013    |      5      |
                       |  5   |    3    |   8/7/2013    |      1      |
                       |  6   |    3    |   8/8/2013    |     10      |
                       ------------------------------------------------

そして、最も古い DateActive を取得したいだけですが、重複する PName は取得したくありません。このような:

PName    |  DateActive  | HoursActive  |
----------------------------------------
Neil     |  8/2/2013    |       3      |
Mark     |  8/2/2013    |       2      |
Onin     |  8/7/2013    |       1      |
----------------------------------------
4

2 に答える 2

0

このようなものがそれを行うかもしれません。最初に各 NameID の最小日付を見つけてから、テーブルに戻って時間を取得する必要があります。

SELECT
       PName, MaxDate as DataActive, HoursActive 
From 
       Table1 t1
    inner Join Table2 t2 on t1.ID = t2.NameID 
    Inner Join (Select min(DateActive) as mindate, NameID from Table2 Group by NameID) as t3  on t3.mindate = t2.ActiveDate and t3.NameID = t2.NameId
于 2013-08-10T01:49:27.880 に答える
0

これはかなり標準的なソリューションである必要があります。

select t.pname, 
    t2.dateactive, 
    t2.hoursac
from table1 t
    join table2 t2 on t.id = t2.nameid
    join (
        select nameid, min(dateactive) mindateactive
        from table2 
        group by nameid
    ) t3 on t2.nameid =  t3.name 
            and t3.mindateactive = t2.dateactive

partition by ステートメントをサポートする RDBMS を使用している場合、これはより効率的です。

select   pname, dateactive, HoursActive 
from (
    select t.pname, 
        t2.dateactive, 
        t2.hoursactive,
        rank() over (partition by t.id order by t2.dateactive) rownum 
    from table1 t
        join table2 t2 on t.id = t2.nameid
) t
where rownum = 1
于 2013-08-10T01:59:06.397 に答える