En iyi yanıtlayıcılar
gun değerlerini alma,

Soru
-
arkadaşlar mrb,
verilere göre, herhangi bir personelin, aya göre (9) ,günler tek satırda olacak şekilde çalışma dökumu almak istiyorum.
şöyle ki,
id=1 personeli için,
günler : 1-2-3-4-5-6-7-8-9-10-11......31
n.mesai : 1-1-0-1-1-1-0-0-1-0-0-0..... şeklinde ,
- Düzenleyen canleveent 4 Ocak 2020 Cumartesi 11:08
Yanıtlar
-
Pivot ile deneyebilirsin;
SELECT * FROM ( SELECT DAY([Tarih]) as [GUN], COUNT(NormalMesai) as [total] FROM [dbo].[Puantajlar] WHERE [PersonelId] = 1 GROUP BY DAY([Tarih]) ) AS D PIVOT( SUM([total]) FOR [GUN] IN([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]) ) AS P;
Altan Özdemir
- Düzenleyen Altan Özdemir 9 Aralık 2019 Pazartesi 10:47
- Yanıt Olarak Öneren CetinBasoz 10 Aralık 2019 Salı 17:42
- Yanıt Olarak İşaretleyen canleveent 1 Nisan 2020 Çarşamba 15:19
Tüm Yanıtlar
-
Pivot ile deneyebilirsin;
SELECT * FROM ( SELECT DAY([Tarih]) as [GUN], COUNT(NormalMesai) as [total] FROM [dbo].[Puantajlar] WHERE [PersonelId] = 1 GROUP BY DAY([Tarih]) ) AS D PIVOT( SUM([total]) FOR [GUN] IN([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]) ) AS P;
Altan Özdemir
- Düzenleyen Altan Özdemir 9 Aralık 2019 Pazartesi 10:47
- Yanıt Olarak Öneren CetinBasoz 10 Aralık 2019 Salı 17:42
- Yanıt Olarak İşaretleyen canleveent 1 Nisan 2020 Çarşamba 15:19
-
Merhaba,
Alternatif olarak aşağıdaki kodu deneyebilirsiniz.
DECLARE @DINAMIKPIVOT AS NVARCHAR(MAX), @ALANLAR AS NVARCHAR(MAX), @BASLIKLAR AS NVARCHAR(MAX) SELECT @ALANLAR= ISNULL(@ALANLAR + ',','') + QUOTENAME(Tarih) FROM (SELECT DISTINCT Tarih FROM [dbo].[Puantajlar] WHERE Tarih<>'' ) AS cat GROUP BY Tarih ORDER by Tarih SELECT @BASLIKLAR = ISNULL(@BASLIKLAR + ',','') + 'ISNULL(' + QUOTENAME(Tarih) + ', 0) AS ' + QUOTENAME(CONVERT(NVARCHAR(11),Tarih,104)) FROM (SELECT DISTINCT Tarih FROM [dbo].[Puantajlar] WHERE Tarih<>'') AS cat GROUP BY Tarih order by Tarih SET @DINAMIKPIVOT = ' SELECT Adi,Soyadi, ' + @BASLIKLAR + ' FROM ( SELECT Adi,Soyadi,PUANTAJ.Tarih,PUANTAJ.[NormalMesai] FROM [dbo].[Personeller] AS PERSONEL INNER JOIN [dbo].[Puantajlar] AS PUANTAJ ON PUANTAJ.PersonelId=PERSONEL.ID ) t PIVOT (SUM(NormalMesai)FOR Tarih IN( ' + @ALANLAR + ') ) p ORDER BY 1 ';
- Yanıt Olarak Öneren CetinBasoz 10 Aralık 2019 Salı 17:42
-
Pivot ile deneyebilirsin;
SELECT * FROM ( SELECT DAY([Tarih]) as [GUN], COUNT(NormalMesai) as [total] FROM [dbo].[Puantajlar] WHERE [PersonelId] = 1 GROUP BY DAY([Tarih]) ) AS D PIVOT( SUM([total]) FOR [GUN] IN([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]) ) AS P;
Altan Özdemir
- Düzenleyen canleveent 10 Aralık 2019 Salı 14:12