Forum

Aylara göre to...
 
Bildirimler
Hepsini Temizle

Aylara göre toplam değerlerin sıralanması.Yardım Edin Lütfen

6 Yazılar
3 Üyeler
0 Likes
1,496 Görüntüleme
(@OnurAgici)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Sql sorgum aşağıdaki gibi;

select ('DİZ')as Tür,COALESCE(SUM(adet),0)as ADT,ay from(SELECT Tdkt,COUNT(DISTINCT Tgs) AS adet,MONTH(Ttar) as ay FROM xTHC WHERE Tdkt='Metin' and Taturb1 like '01%' GROUP BY Tdkt, Taturb1,MONTH(Ttar)) xTHC GROUP BY Tdkt,ay 

union all 

select ('OMUZ')as Tür,COALESCE(SUM(adet),0)as ADT,ay from(SELECT Tdkt,COUNT(DISTINCT Tgs) AS adet,MONTH(Ttar) as ay FROM xTHC WHERE Tdkt='Metin' and Taturb1 like '05%' GROUP BY Tdkt, Taturb1,MONTH(Ttar)) xTHC GROUP BY Tdkt,ay --order by ay 

 sorgu sonucum

Tür   ADT  AY

DİZ 20 1

DİZ 28 2

DİZ 35 3

DİZ 16 4

DİZ 20 5

DİZ 17 6

DİZ 16 7

DİZ 13 8

DİZ 16 9

OMUZ 2 1

OMUZ 1 2

OMUZ 3 3

OMUZ 4 4

OMUZ 2 7

OMUZ 1

 Sorunum şu bu sorguyla ADT değeri varsa karşılığına ay bilgisini getiriyor. Ancak istediğim şey 1. aydan 12 aya kadar sıralama olması ve bu değrlere karşı ADT değerlerini getirmesi eğer adet değeri yoksa da 0 değeri vermesi.Örnek aşağıda tablo şeklinde görebilirsiniz.

 DİZ 20 1

DİZ 28 2

DİZ 35 3

DİZ 16 4

DİZ 20 5

DİZ 17 6

DİZ 16 7

DİZ 13 8

DİZ 16 9

DİZ 0 10

DİZ 0 11

DİZ 0 12 

OMUZ 2 1

OMUZ 1 2

OMUZ 3 3

OMUZ 4 4

OMUZ 0 5

OMUZ 0 6  

OMUZ 2 7

OMUZ 0

OMUZ 1 9

OMUZ 0 10

OMUZ 0 11

OMUZ 0 12

Yardımlarınızı rica ediyorum. 

 
Gönderildi : 26/10/2013 16:08

(@YasarKOZAN)
Gönderiler: 44
Trusted Member
 

Onur bu bi sorun değil! Bi ödev yada başka bişey için sen cevap istiyorsun. Nasıl olsa yazarlar demek yerine gidip araştırıp öğrenebilirsin nasıl olduğunu.

 
Gönderildi : 26/10/2013 18:43

(@OnurAgici)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Yaşar bey;

 Keşke dediğiniz gibi bir ödev peşinde olsaydım. 10 sene aradan sonra zorunluluktan dolayı sql'e girişince bu konudan çok uzaklaştığımı fark ettim.

Aynı şekilde eğer aciliyetim olmasa zaten 2 ay sıkar belli bir seviyeye gelirdim.Ancak şu anda sahip olamadığım şey ekstra zaman.

Yine de zahmet edip okuduğunuz ve cevap verdiğiniz için teşekkür ederim. 

 

 
Gönderildi : 27/10/2013 02:50

(@YasarKOZAN)
Gönderiler: 44
Trusted Member
 

Onur bey böyle bi tepki vermemin sebebi açtığınız toplamda 4 konu başlığı var ve  bu konu ile alakalı. Ve eylül ayının başından beri gelmeye başlamış ve dediğim gibi sorun sabit. Okulların başlaması ile ben bunu bu sıklıkta görünce, ödev olrak tahmin ettim ve ona göre cevap yazdım. Ama özür dilerim böyle bir tepki için eğer sizi kırdıysam. Kusura bakmayın. Bizimde yeterli zamanımız olmadığından dolayı inanın böyle sorulara cevap verme konusunda sıkıntılar yaşıyoruz. Keşke yeterli zamanımız olsa ve bu konular hakkında makaleler yazbilsek. Tekrardan özür dilerim kırdı isem. Çalışmanızda kolay gelsin.

 
Gönderildi : 27/10/2013 03:17

(@OnurAgici)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Yaşar bey;

Empati kurunca bende olsam eminim sizin verdiğiniz tepkiyi verirdim.

Teşekkür ederim size de iyi çalışmalar. 

 
Gönderildi : 27/10/2013 04:34

(@RecepHazer)
Gönderiler: 4
New Member
 

--ilk once sizin sonuclarınızın olduğu tablo benzeri bir tablo oluşturuyoruz
Declare @tSonuclar table (Tur nvarchar(10),Adet int ,Ay int)
insert into @tSonuclar values('Omuz',2,1)
insert into @tSonuclar values('Omuz',1,2)
insert into @tSonuclar values('Omuz',3,3)
insert into @tSonuclar values('Omuz',4,4)
insert into @tSonuclar values('Omuz',2,7)
insert into @tSonuclar values('Omuz',1,9)

insert into @tSonuclar values('Diz',20,1)
insert into @tSonuclar values('Diz',15,3)
insert into @tSonuclar values('Diz',5,7)
insert into @tSonuclar values('Diz',5,9)

select * from @tSonuclar order by Tur,Ay

---Sonra 1 den 12 ye kadar aylar olan bir tablo oluşturuyoruz
Declare @ttAylar table (Ay int)
;WITH R AS
(
    SELECT 1 as N
    UNION ALL
    SELECT N+1 as N
    FROM R WHERE N < 12
)
insert into @ttAylar
SELECT N FROM R

--select * from @ttAylar

--Eğer Sonuclar tablsounda olan her Distinct alan için aylar ile cross join yaparsak
--son kayıt için bir taslak oluşmuış olur
select Distinct Tur,ttAylar.Ay from @tSonuclar
cross apply @ttAylar ttAylar

---iki tabloyu taslak tablodan tüm kayıtları alarak joinliyoruz
select ttTemp.Tur  ,isnull(Adet,0) as Adet,ttTemp.Ay from
(
    select Distinct Tur,ttAylar.Ay from @tSonuclar
    cross apply @ttAylar ttAylar
)ttTemp
left outer join  @tSonuclar tSonuclar on tSonuclar.Ay = ttTemp.Ay and tSonuclar.Tur = ttTemp.Tur
order by ttTemp.Tur,ttTemp.Ay

 
Gönderildi : 26/12/2013 12:28

Paylaş: