Forum

Günlük Ta...
 
Bildirimler
Hepsini Temizle

Günlük Tarihi Gruplayarak En Son Durum Değerini Aldırabilmek

2 Yazılar
2 Üyeler
0 Likes
422 Görüntüleme
(@ilkerARSLANTURK)
Gönderiler: 18
Eminent Member
Konu başlatıcı
 

Merhaba;

Aşağıdaki sorgum ile sonuçları döndürürken bir sıkıntı yaşamıyorum fakat gruplamak istediğim alan Tarih olunca hata alıyorum. ProjeNo yerine Tarih gruplaması nasıl yapabilirim. 

Not : Tarih alanım datetime format ve ben ProjeNo integer alan yerine Left(CONVERT(NVARCHAR, Tarih, 20),10) kullanarak yapmaya çalıştım olmadı. 

DECLARE @ProjeNo int=NULL
DECLARE @HangiYil Varchar(4)
DECLARE @HangiAy Varchar(30)
DECLARE @BarkodNo Varchar(13)

SET @ProjeNo = 1;
SET @HangiYil = '2012';
SET @HangiAy = 'Ocak';
SET @BarkodNo = '2012092816093';

IF @HangiAy = 'Ocak' SET @HangiAy = @HangiYil + '-01';
IF @HangiAy = 'Şubat' SET @HangiAy = @HangiYil + '-02';
IF @HangiAy = 'Mart' SET @HangiAy = @HangiYil + '-03';
IF @HangiAy = 'Nisan' SET @HangiAy = @HangiYil + '-04';
IF @HangiAy = 'Mayıs' SET @HangiAy = @HangiYil + '-05';
IF @HangiAy = 'Haziran' SET @HangiAy = @HangiYil + '-06';
IF @HangiAy = 'Temmuz' SET @HangiAy = @HangiYil + '-07';
IF @HangiAy = 'Ağustos' SET @HangiAy = @HangiYil + '-08';
IF @HangiAy = 'Eylül' SET @HangiAy = @HangiYil + '-09';
IF @HangiAy = 'Ekim' SET @HangiAy = @HangiYil + '-10';
IF @HangiAy = 'Kasım' SET @HangiAy = @HangiYil + '-11';
IF @HangiAy = 'Aralık' SET @HangiAy = @HangiYil + '-12';

SELECT Select2Tablo2.ProjeNo, Select4Tablo3.Durum FROM
    (SELECT ProjeNo, MAX(count_Durum) AS max_count FROM 
(
SELECT 
ProjeNo, 
Durum, 
COUNT(Durum) AS count_Durum 
FROM Barkod_Listesi 
WHERE BarkodNo=@BarkodNo And Left(CONVERT(NVARCHAR, Tarih, 20),7)=@HangiAy
GROUP BY ProjeNo, Durum
) AS Select3Tablo1
     GROUP BY ProjeNo) AS Select2Tablo2
INNER JOIN
(SELECT ProjeNo, COUNT(Durum) AS count_Durum, Durum FROM Barkod_Listesi GROUP BY ProjeNo, Durum) Select4Tablo3
ON Select2Tablo2.ProjeNo = Select4Tablo3.ProjeNo AND
   Select4Tablo3.count_Durum = Select2Tablo2.max_count

 

GO

EXEC Barkod_List @ProjeNo=1, @HangiYil='2012', @HangiAy='Ocak', @BarkodNo='2012092816093' 

 
Gönderildi : 17/10/2012 06:54

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

Merhaba

tarih formatını aşağıdaki gibi dener misin select'e yazdığın gibi group by içinde aynısını yazmalısın.

convert(datetime, '12.11.2012', 104) veya

convert(nvarchar, tarih_kolonu, 104)  

 
Gönderildi : 13/11/2012 02:16

Paylaş: