MSSQL, list aller Nachrichten, aber unterschiedliche Absender

Ich möchte alle Meldungen eines Benutzers in einer list auflisten. Ich konnte alle Nachrichten auflisten, aber ich möchte eine list von verschiedenen Absendern. Es ähnelt der view von facebook messages

Ich habe dieses Layout für die Nachricht Tabelle

CREATE TABLE [dbo].[messages]( [id] [bigint] IDENTITY(1,1) NOT NULL, [reciever] [varchar](50) NULL, [sender] [varchar](50) NULL, [posted] [datetime] NULL, [message] [varchar](1000) NULL, [status] [varchar](1) NULL ) 

Receiver und Absender sind Fremdschlüssel dieser Tabelle

 CREATE TABLE [dbo].[accounts]( [uname] [varchar](50) NOT NULL, [pword] [varchar](32) NULL, [fname] [varchar](50) NULL, [mname] [varchar](50) NULL, [lname] [varchar](50) NULL ) 

Ich habe versucht, diese Abfrage zu machen, aber es funktioniert nicht

 SELECT [status], posted, sender, ( SELECT DISTINCT sender FROM [messages] b WHERE a.sender = b.sender ) AS sender FROM [messages] a 

Das Ziel ist es, alle Nachrichten, aber eindeutige / eindeutige Absender aufzulisten.

Danke im Voraus

Solutions Collecting From Web of "MSSQL, list aller Nachrichten, aber unterschiedliche Absender"

Ich finde es endlich! LOL Ich füge einfach den Zustand innerhalb des WITH-Abfrageblocks hinzu

 WITH latestMessages AS ( SELECT ID, receiver, sender, posted, message, status, ROW_NUMBER() OVER (Partition BY Sender ORDER BY posted DESC) RN FROM messages WHERE receiver = 'admin' ) SELECT ID, receiver, sender, posted, message, status FROM latestMessages WHERE RN = 1 

Dies ist viel einfach und schnell Ansatz, anstatt zwei getrennte Abfragen auszuführen.

PS: Wie kann ich das so lösen?

 ;WITH latestMessages AS ( SELECT ID, receiver, sender, posted, message, status, ROW_NUMBER() OVER (Partition BY Sender ORDER BY posted DESC) RN FROM messages ) SELECT ID, receiver, sender, posted, message, status FROM latestMessages WHERE RN = 1 

Ich konnte dieses Problem lösen. Was ich tat, war die list aller Nachrichten des Empfängers

 SELECT DISTINCT sender FROM messages WHERE receiver = 'someuser' 

Dann bekommst du die aktuelle Nachricht des Empfängers

 SELECT TOP (1) message, posted FROM messages WHERE receiver = 'someuser' AND sender = 'anotheruser' ORDER BY posted DESC 

Ich habe es getan, indem ich einige functionen der Programmiersprache verwende, die ich benutze