创建一个 returns 值第一次出现的视图

Creating a View that returns the first occurrence of a value

我正在尝试创建一个 returns 值第一次出现的视图。

我有两个table

 First table: 
sID | dt 
12  | DateTimeValue1
12  | DateTimeValue2

second table: 
S_ID 
12

我希望视图加入两个 table 并给我第一次出现 S_ID(在本例中为 DateTimeValue1)

我怎样才能做到这一点?

更多信息: 在 table 1 我有两列 sID 和 dt。这些列的值如下所示:

      sID: 1 dt: 2014-06-12 
      sID: 1 dt: 2014-06-13 
      sID 1 dt: 2014-06-14 etc... 

我想加入我认为的两个 table,这样 其中 S_ID 匹配 sID 它 returns 第一个值(在本例中为 2014-06-12)

抱歉造成任何混淆!

这是我目前得到的结果:

这是我目前得到的:

        CREATE VIEW view_name AS
        SELECT [S_ID]
        FROM table1
        LEFT JOIN table2
        ON table1.[S_ID]=table2.sID;

在 MS SQL 服务器中,您可以 select 表 1 的第一行并将其与表 2 在这样的视图中连接:

create view view_name
as
select table1.*,table2.*
from table2 
     inner join
      (select top 1 *
       from table1
       order by table1.what_ever_field) as table1 
     on table2.id = table1.id

如果 table2 有一个指向 table1 的外键,这很有效。

如果是没有外键的独立表可以这样做:

create view view_name
as
select table1.*,table2.*
from (select top 1 * from table2 order by table2.field1) as table2
     ,
      (select top 1 * from table1 order by table1.field1) as table1 

请尝试:

select t1.sID,min(t1.dt) from first_table t1, second_table t2 where  t1.sID=t2.sID group by t1.sID

我在 sybase 中尝试了以下代码,效果很好。

create table #temp1
(sID int,dt date)


create table #temp2
(sID int)

insert into #temp1
select 12,getdate()

insert into #temp1
select 12,getdate()

insert into #temp1
select 12,getdate()

insert into #temp2
select 12

insert into #temp1
select 13,getdate()

insert into #temp2
select 13

insert into #temp1
select 14,getdate()

insert into #temp1
select 14,getdate()


insert into #temp2
select 14


select * from #temp1
select * from #temp2


select t1.sID,min(t1.dt) from first_table t1,
second_table t2
where t1.sID=t2.sID
group by t1.sID

你可以这样做:http://sqlfiddle.com/#!3/66ee02/1

create view theview as
select 
  t1.s_id, min(dt) dt
from  
  table1 t1 inner join 
  table2 t2 on t1.s_id = t2.s_id
group by 
  t1.s_id