Sorguda count distinct nasıl yapabilirim?

1 2 3
17/12/2008, 16:44

Hakan

Merhabalar,

Quary de alt alta gelen mükerrer rakamların count edilmesini yapmak için kullandıgım komut bu "count(distinct Main.FisNo) AS CountOfFisNo INTO gunluk" fakat bir türlü beceremedim. Örnek resim üzerinde anlatmaya calistim yardımcı olursanız sevinirim.

iyi çalışmalar,
17/12/2008, 17:28

syrup

sevgili hakan şu şekilde dene

select count(fis) from(select distinct fis from main) as syrup
17/12/2008, 17:43

Hakan

(17/12/2008, 17:28)syrup yazdı: sevgili hakan şu şekilde dene

select count(fis) from(select distinct fis from main) as syrup

Sayın syrup,

Cevabınız icin teşekkür ederim. ama olmadı.. Ben Sql kodunu komple yazayım, birde o şekilde göz atın belki ben yanlış yapmış olabilirim.

SELECT Main.SatisTarihi, [Magaza Kodlari].Zone, [Magaza Kodlari].Area, [Magaza Kodlari].Shops, Sum(Main.HasilatFisUzerindeki) AS SumOfHasilatFisUzerindeki, Sum(Main.SatisAdedi) AS SumOfSatisAdedi, IIf([Main]![MalKodu]>1000 And [Main]![MalKodu]<9999999,"CIGARETTE"," ") & IIf([Main]![MalKodu]>10000000 And [Main]![MalKodu]<19999999,"SPIRITS"," ") & IIf([Main]![MalKodu]>20000000 And [Main]![MalKodu]<29999999,"CHOCOLATE"," ") & IIf([Main]![MalKodu]>30000000 And [Main]![MalKodu]<39999999,"PERFUME"," ") & IIf([Main]![MalKodu]>40000000 And [Main]![MalKodu]<44999999,"MAKEUP"," ") & IIf([Main]![MalKodu]>45000000 And [Main]![MalKodu]<49999999,"SKINCARE"," ") & IIf([Main]![MalKodu]>50000000 And [Main]![MalKodu]<89999999,"ACCESSORY/TOYS"," ") & IIf([Main]![MalKodu]>90000000 And [Main]![MalKodu]<2900000000,"OTHERS/SOUVENIR"," ") AS [Group], Sum(IIf([Main]![SatisTarihi]>=#1/1/2008# And [Main]![SatisTarihi]<=#12/31/2008#,[Main]![HasilatFisUzerindeki],0)) AS 2008, Sum(IIf([Main]![SatisTarihi]>=#1/1/2007# And [Main]![SatisTarihi]<=#12/31/2007#,[Main]![HasilatFisUzerindeki],0)) AS 2007, count(distinct Main.FisNo) AS CountOfFisNo INTO gunlukFROM ([Magaza Kodlari] INNER JOIN Main ON [Magaza Kodlari].Code = Main.MagazaKodu) LEFT JOIN Milliyettablosu ON Main.MusteriBilgisiMiliyeti = Milliyettablosu.[Musteri No]
GROUP BY Main.SatisTarihi, [Magaza Kodlari].Zone, [Magaza Kodlari].Area, [Magaza Kodlari].Shops, IIf([Main]![MalKodu]>1000 And [Main]![MalKodu]<9999999,"CIGARETTE"," ") & IIf([Main]![MalKodu]>10000000 And [Main]![MalKodu]<19999999,"SPIRITS"," ") & IIf([Main]![MalKodu]>20000000 And [Main]![MalKodu]<29999999,"CHOCOLATE"," ") & IIf([Main]![MalKodu]>30000000 And [Main]![MalKodu]<39999999,"PERFUME"," ") & IIf([Main]![MalKodu]>40000000 And [Main]![MalKodu]<44999999,"MAKEUP"," ") & IIf([Main]![MalKodu]>45000000 And [Main]![MalKodu]<49999999,"SKINCARE"," ") & IIf([Main]![MalKodu]>50000000 And [Main]![MalKodu]<89999999,"ACCESSORY/TOYS"," ") & IIf([Main]![MalKodu]>90000000 And [Main]![MalKodu]<2900000000,"OTHERS/SOUVENIR"," ")
HAVING (((Main.SatisTarihi)>=#1/1/2008# And (Main.SatisTarihi)<=#12/15/2008#)) OR (((Main.SatisTarihi)>=#1/1/2007# And (Main.SatisTarihi)<=#12/15/2007#));
17/12/2008, 18:23

syrup

hakan bu sorguda, önceki sorgunun çıkan sonucu baz alınarak gerekli sayıyı alırız.

select count(fis) from (select distinct fis from (SELECT Main.SatisTarihi, [Magaza Kodlari].zone, [Magaza Kodlari].area, [Magaza Kodlari].shops, Sum(Main.HasilatFisUzerindeki) AS SumOfHasilatFisUzerindeki, Sum(Main.SatisAdedi) AS SumOfSatisAdedi, IIf(Main!MalKodu>1000 And Main!MalKodu<9999999,"CIGARETTE"," ") & IIf(Main!MalKodu>10000000 And Main!MalKodu<19999999,"SPIRITS"," ") & IIf(Main!MalKodu>20000000 And Main!MalKodu<29999999,"CHOCOLATE"," ") & IIf(Main!MalKodu>30000000 And Main!MalKodu<39999999,"PERFUME"," ") & IIf(Main!MalKodu>40000000 And Main!MalKodu<44999999,"MAKEUP"," ") & IIf(Main!MalKodu>45000000 And Main!MalKodu<49999999,"SKINCARE"," ") & IIf(Main!MalKodu>50000000 And Main!MalKodu<89999999,"ACCESSORY/TOYS"," ") & IIf(Main!MalKodu>90000000 And Main!MalKodu<2900000000,"OTHERS/SOUVENIR"," ") AS [Group], Sum(IIf(Main!SatisTarihi>=#1/1/2008# And Main!SatisTarihi<=#12/31/2008#,Main!HasilatFisUzerindeki,0)) AS 2008, Sum(IIf(Main!SatisTarihi>=#1/1/2007# And Main!SatisTarihi<=#12/31/2007#,Main!HasilatFisUzerindeki,0)) AS 2007, Main.fis, Main.fisno
FROM ([Magaza Kodlari] INNER JOIN Main ON [Magaza Kodlari].code = Main.MagazaKodu) LEFT JOIN Milliyettablosu ON Main.MusteriBilgisiMiliyeti = Milliyettablosu.[Musteri No]
GROUP BY Main.SatisTarihi, [Magaza Kodlari].zone, [Magaza Kodlari].area, [Magaza Kodlari].shops, IIf(Main!MalKodu>1000 And Main!MalKodu<9999999,"CIGARETTE"," ") & IIf(Main!MalKodu>10000000 And Main!MalKodu<19999999,"SPIRITS"," ") & IIf(Main!MalKodu>20000000 And Main!MalKodu<29999999,"CHOCOLATE"," ") & IIf(Main!MalKodu>30000000 And Main!MalKodu<39999999,"PERFUME"," ") & IIf(Main!MalKodu>40000000 And Main!MalKodu<44999999,"MAKEUP"," ") & IIf(Main!MalKodu>45000000 And Main!MalKodu<49999999,"SKINCARE"," ") & IIf(Main!MalKodu>50000000 And Main!MalKodu<89999999,"ACCESSORY/TOYS"," ") & IIf(Main!MalKodu>90000000 And Main!MalKodu<2900000000,"OTHERS/SOUVENIR"," "), Main.fis, Main.fisno
HAVING (((Main.SatisTarihi)>=#1/1/2008# And (Main.SatisTarihi)<=#12/15/2008#)) OR (((Main.SatisTarihi)>=#1/1/2007# And (Main.SatisTarihi)<=#12/15/2007#))) as syrup) as hakan
17/12/2008, 19:19

Hakan

Sayın Syrup,

Evime geldim yarın iş yerinden deniyip cvp atacağım. çok teşekkür ederim.
17/12/2008, 20:58

esrefigit

fisno
11
11
588
588
588
588
456
45
456
457
457
457
500
bu şekilde tabloya girilmiş veriyi

bu sorgu
SELECT Tablo1.fisno
FROM Tablo1
GROUP BY Tablo1.fisno
HAVING (((Tablo1.fisno) In (SELECT [fisno] FROM [Tablo1] As Tmp GROUP BY [fisno] HAVING Count(*)>=1 )));


fisno
11
45
456
457
500
588

bu şekilde verir yani her kaydın yalnız birini verir dolayısı ile saymış olursun
1 2 3