monelogg adlı üyeden alıntı

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.


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