我正在尝试创建一个返回第一次出现的值的视图。
我有两张桌子
First table:
sID | dt
12 | DateTimeValue1
12 | DateTimeValue2
second table:
S_ID
12
我希望视图加入两个表并给我第一次出现S_ID(在本例中为DateTimeValue1)
我该如何做到这一点?
更多信息: 在表1中,我有两列sID和dt。这些列的值如下所示:
sID: 1 dt: 2014-06-12
sID: 1 dt: 2014-06-13
sID 1 dt: 2014-06-14 etc...
我想在我的视图中加入这两个表 其中S_ID与sID匹配,它返回第一个值(在本例中为2014-06-12)
对不起有任何困惑!
这是我到目前为止所得到的:
这是我到目前为止所得到的:
CREATE VIEW view_name AS
SELECT [S_ID]
FROM table1
LEFT JOIN table2
ON table1.[S_ID]=table2.sID;
答案 0 :(得分:1)
您可以执行以下操作: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
答案 1 :(得分:0)
在MS SQL Server中,您可以选择table1的第一行,并在这样的视图中将其与table2连接:
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
答案 2 :(得分:0)
请尝试:
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