Merhaba, SQL Server bilgisayarımda yüklü olmadığı için deneme şansım olmadı, aşağıdaki komutları yazdım, belki işinizi görür.
Özetle groupid değerlerini sırayla buluyor, id değeri en büyük olanı geçici tabloya ekliyor. Sonra geçici tablodaki verileri listeliyor.
Kolay gelsin.
USE veri_tabani
DECLARE @a INT
CREATE TABLE #gecici_tablo
(
id INT,
icerik NVARCHAR(MAX),
groupid INT
)
SET @a=1
WHILE @a <= SELECT MAX(groupid) FROM tablo
BEGIN
INSERT INTO gecici_tablo VALUES(SELECT * FROM tablo WHERE groupid=@a AND id=MAX(id))
SET @a=@a+1
END
SELECT * FROM #gecici_tablo
Özetle groupid değerlerini sırayla buluyor, id değeri en büyük olanı geçici tabloya ekliyor. Sonra geçici tablodaki verileri listeliyor.
Kolay gelsin.
Hocam ilgine teşekkür ederim çalıştıramadım bu kodu şöyle bir hata veriyor.
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
Bende sql e ekstra bir yük getirmesine rağmen functionlarla çözdüm belki birinin işine yarar diye yazıyorum
create function [dbo].[denemebul] (@grupid int)
returns varchar(150)
as
begin
declare @sonuc varchar(150)
set @sonuc = (select top 1 icerik1 from tbl where grupid = @grupid order by Tarih desc)
return @sonuc
end
create proc [dbo].[deneme1]
as
begin
select grupid,
dbo.denemebul (grupid) as id,
dbo.denemebul2 (grupid) as icerik1,
dbo.denemebul1 (grupid) as icerik2,
dbo.denemebul3 (grupid) as icerik3,
from tbl
group by grupid
end