February 25, 2004 at 4:22 am
Hi all, I have a table that contains details of news stories associated with specific entities. I have a need to be able to select the single most recent news story per entity, regardless of the individual date for each entity. My table is setup as follows
CREATE TABLE [dbo].[news] (
[news_id] [int] IDENTITY (1, 1) NOT NULL ,
[news_entity_id] [int] NULL ,
[news_entity_area_id] [int] NULL ,
[news_date] [datetime] NULL ,
[news_date_time] [smallint] NULL ,
[news_private] [int] NULL ,
[news_private_release_date] [datetime] NULL ,
[news_private_release_date_time] [smallint] NULL ,
[news_expiry_date] [datetime] NULL ,
[news_expiry_date_time] [smallint] NULL ,
[news_headline] [varchar] (500) COLLATE Latin1_General_CI_AS NULL ,
[news_item] [ntext] COLLATE Latin1_General_CI_AS NULL ,
[news_item_archived] [int] NULL ,
[news_item_deleted] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
I need to be able to base my select statement on the following fields news_entity_id, news_date & news_date_time. There can any number of records per entity but I must only return the top 20 news stories from the table based on date and time and the same entity cannot appear more than once.
If anyone can help me I would appreciate it, also let me know if I have not made myself clear as I am getting quite confused with it already!
February 25, 2004 at 7:32 am
Select *
from
news N
join
(
Select TOP 20 news_entity_id, Max (
Convert(char(8),news_date,112)
+
Right('000'+ Cast(news_date_time as varchar(4)),4)
  as MaxDateTime
from news
group by news_entity_id
order by 2 DESC
  NM on N.news_entity_id = NM.news_entity_id
and
N.news_date = Cast(Left(NM.MaxDateTime,8) as datetime)
and
N.news_date_time = Cast(Right(NM.MaxDateTime,4) as int)
ORDER BY N.news_date DESC , news_date_time
* Noel
February 25, 2004 at 7:39 am
SELECT TOP 20 n.*
FROM NEWS n
WHERE news_id IN (SELECT top 1 t.news_id FROM NEWS t
WHERE t.news_entity_id = n.news_entity_id
ORDER BY news_date DESC, news_date_time DESC)
ORDER BY news_date DESC, news_date_time DESC
February 25, 2004 at 7:55 am
Many thanks guy's. With your help you have saved my sanity. Problem solved.
Viewing 4 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply