Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Group By Kullanımına ait birkaç örnek
#11
Hocam kodlar hata verdi. IBExpert ISNULL ' u tanımadı.

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
ISNULL.

Sorunu çözdüm arkadaşlar.
İlk önce bir view oluşturdum.
CREATE VIEW ISTATISTIK(
   KISI_SAYISI,
   YIL)
AS
Select COUNT(DISTINCT(ADI)) as KISI_SAYISI ,YIL from tablo1
Group By ADI,YIL
Having sum(ADET) >= 10
;

Sonra da bu view içerisinden şu sorguyla amaca ulaştık.
Select YIL,SUM(KISI_SAYISI) as KISI_SAYISI from istatistik

Group By YIL ORDER BY YIL

Hiç view kullanmadan iç içe select ile bu sonuca varabilir miyiz acaba?
Cevapla
#12
(25-01-2022, Saat: 18:17)sunbeki Adlı Kullanıcıdan Alıntı: Hocam kodlar hata verdi. IBExpert ISNULL ' u tanımadı.

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
ISNULL.

Sorunu çözdüm arkadaşlar.
İlk önce bir view oluşturdum.
CREATE VIEW ISTATISTIK(
   KISI_SAYISI,
   YIL)
AS
Select COUNT(DISTINCT(ADI)) as KISI_SAYISI ,YIL from tablo1
Group By ADI,YIL
Having sum(ADET) >= 10
;

Sonra da bu view içerisinden şu sorguyla amaca ulaştık.
Select YIL,SUM(KISI_SAYISI) as KISI_SAYISI from istatistik

Group By YIL ORDER BY YIL

Hiç view kullanmadan iç içe select ile bu sonuca varabilir miyiz acaba?



şu an ben deneyemiyorum ama şu şekilde subquery ile siz bi deneyin isterseniz 

Select YIL,SUM(KISI_SAYISI) as KISI_SAYISI from
(
 Select COUNT(DISTINCT(ADI)) as KISI_SAYISI ,YIL from tablo1
 Group By ADI,YIL
 Having sum(ADET) >= 10
)  istatistik
Group By YIL 
ORDER BY YIL
İmkanın sınırı, imkansızın yanıbaşındadır. Denemeden bilemezsin.
Cevapla
#13
@bydelphi

Teşekkür ederim bu sefer oldu. İstediğimiz sonucu aldık.
Cevapla
#14
Merhaba,

Aşağıdaki şekilde bir yere kadar geldim yalnız söyle bir sorun var, 2. ve 3.sorgu arası ilişki yok bunu nasıl yapacağım ?
Amaç ayrı satırları gerekli birimlerin ve kişilerin maillerine göndermek. Aşağıdaki şekilde olunca Müdur tablosunun en üstünde yer alan kişiyi bulup ona gönderiyor.


After Update
AS 
BEGIN

set nocount on
IF ISNULL((SELECT count(*) FROM [PORTAL].[dbo].[PRODUKSIYON] 
WHERE SICIL IN (44) AND ALTDURUMU IN (2)),0) > 0
BEGIN 

DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
DECLARE @BIRIMMUDURUMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @GIZLIMAIL VARCHAR(50)

-- 2.Sorgu
SELECT  @BILGIMAIL = M.BILGI , @BIRIMMUDURUMAIL=M.EMAIL, @KENDIMAIL= PE.EMAIL,  @GIZLIMAIL=M.GIZLI 
FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left join PERSONEL PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI)
left join MUDUR M ON (M.ID=PE.BIRAMIRI)
WHERE  I.ALTDURUMU IN (3) 


-- 3.Sorgu
SELECT I.id as 'td','', [dbo].[InitCap](I.DEPARTMAN) as 'td','', I.SICIL as 'td','', [dbo].[InitCap](I.ADISOYADI) as 'td',''
, [dbo].[InitCap](I.YAPIMCI) as 'td','', CONVERT(DATE,I.CEKIMTARIHI) as 'td','', I.KISI_SAYISI as 'td','', [dbo].[InitCap](I.YAYINADI_KARSILASMA) as 'td',''
,CAST(I.MEKANBEDELI AS numeric(18,2)) as 'td',''
, I.DTIPI1 as 'td',''
,CAST(I.YEMEKBEDELI AS numeric(18,2)) as 'td',''
, I.DTIPI2 as 'td',''
,CAST(I.YOLBEDELI AS numeric(18,2)) as 'td',''
, I.DTIPI3 as 'td',''
,CAST(I.DIGERBEDELI AS numeric(18,2)) as 'td',''
, I.DTIPI4 as 'td',''
, I.ACIKLAMA as 'td',''
, D.ALTDURUMACIKLAMA as 'td',''


FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left join PERSONEL PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI)
left join MUDUR M ON (M.ID=PE.BIRAMIRI)
WHERE I.SICIL IN (44) AND I.ALTDURUMU IN (2) 


Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi