需要帮助SQL SELECT查询了这种双表格
表捕捉图像:http://img844.imageshack.us/img844/6213/99730337.jpg需要帮助SQL SELECT查询了这种双表格
------------ PositionTable------------
ID ContentFK Position
11 100 1
12 101 1
13 104 2
14 102 2
15 103 2
16 105 3
17 106 3
18 107 2
----------Content Table ------------
ContentID UpdateDate Title
100 11.10.2009 Aol
101 12.10.2009 Microsoft
102 12.10.2009 e-Bay
103 12.11.2009 google
104 16.11.2009 novell
105 17.11.2009 asus
106 16.11.2009 nokia
107 11.11.2009 samsung
谁能帮我这两个表 我的方案之间的问题。
按数字排序为位置1,2,3。在ContentTablo
1,2,3)随着PositionTable.ContentFK = ContentTable.ContentID 按上次更新的UpdateDate:但是,组数由ASC位置(位置只列出一个记录 (订单。
我怎样才能获得列表相同的结果
p.Postion p.ID p.ContentFK c.UpdateDate c.Title
1 12 101 12.10.2009 Microsoft
2 13 104 16.11.2009 novell
3 16 105 17.11.2009 asus
感谢所有,
这应做到:
编辑:原来的代码是因为我认为你的日期是MM.DD.YYYY。实现了你的日期DD.MM.YYYY并相应地调整了代码。
编辑2:基于UpdateDate数据类型的反馈更改了答案。
;with cteMaxDate as (
select p.Position, MAX(c.UpdateDate) as MaxDate
from PositionTable p
inner join ContentTable c
on p.ContentFK = c.ContentID
group by p.Position
)
select p.Position, p.ID, p.ContentFK, c.UpdateDate, c.Title
from cteMaxDate m
inner join PositionTable p
on m.Position = p.Position
inner join ContentTable c
on p.ContentFK = c.ContentID
and m.MaxDate = c.UpdateDate
子查询有点难看(和相关),但这是我能想到的最简单的方法。
假设你UpdateDate列是DATETIME - 否则,你将不得不做一些像乔做了(或更好,改列到DATETIME :-)
select p.Position
,p.ID
,p.ContentFK
,c.UpdateDate
,c.Title
from PositionTable p
join ContentTable c
on p.ContentFK = c.ContentID
and c.UpdateDate = (select max(ic.UpdateDate) from ContentTable ic
join PositionTable ip
on ip.ContentFK = ic.ContentID
where ip.Position = p.Position)
order by p.Position
只是注意到我自己,并据此编辑。 – 2010-10-07 16:51:30
感谢它的工作。 UpdateDate类型:SmallDateTime – user469272 2010-10-07 17:26:19
尝试:
select Position, ID, ContentFK, UpdateDate, Title
from (
select p.Position,
p.ID,
p.ContentFK,
c.UpdateDate,
c.Title,
row_number() over (partition by p.Position order by p.Position, c.UpdateDate desc) as num
from Position p inner join
Content c on p.ContentFK = c.ContentId) a
where num = 1
如果Google的日期为'12 .11.2010',该怎么办? – LittleBobbyTables 2010-10-07 16:48:54
我假设它是一个日期时间字段在这里,并且狡猾的字符串格式是一个单独的问题。当然应该是YYYYMMDD是完全安全的。 – MLT 2010-10-07 16:51:42
返回错误:无效的对象名称'位置'。我无法修复它 – user469272 2010-10-07 17:20:33
+1 - 当日的好消息 - 我原以为MM.DD.YYYY也是。假设它是一个字符串,你不能只在UpdateDate上做一个MAX,这就是你所描述的。 – LittleBobbyTables 2010-10-07 16:47:40
谢谢。我想给出一个完整的结果。 – user469272 2010-10-07 17:16:23
更新日期类型:SmallDateTime – user469272 2010-10-07 17:23:55