none
null değer hk.. RRS feed

  • Soru

  • mrb,

    Aşağdaki sorguda null deper için her kolonda 'coalesce' yazmak dogru mu, bunun kısa yazım şekli var mı,aceba,

    SELECT Adi,Soyadi, pType, COALESCE(X.[1], 0) as [1],COALESCE(X.[2], 0) as [2],COALESCE(X.[3], 0) as [3],COALESCE(X.[4], 0) as [4]
    FROM (
    	SELECT --
    	FROM [dbo].[Puanlar] 
    	) x
      join Personeller P on x.PId=P.Id
     PIVOT(
    	SUM(Puan) FOR [GUN] IN([1],[2],[3],[4])) AS X;

    14 Nisan 2020 Salı 15:01

Yanıtlar

  • Null ile 0 ayni şey degil. null iken o gun deger yok demek. Senin icin ayni anlama geliyorsa, nasıl istersen onu yapabilirsin. Ornek: (an altta iki farklı select var):

    DECLARE @Cariler TABLE
      (
        CariNo INT IDENTITY PRIMARY KEY ,
        AdiSoyadi VARCHAR(20)
      );
    
    DECLARE @Hareketler TABLE
      (
        HareketNo INT IDENTITY PRIMARY KEY,
        CariNo INT,
        Tarih DATETIME ,
        Miktar INT
      );
    
    INSERT @Cariler 
      (AdiSoyadi)
      VALUES
      ('Ahmet'), ('Mehmet'), ('Can'),
      ('Levent'), ('Huseyin'), ('Suat');
    
    INSERT	@Hareketler
    (CariNo, Tarih, Miktar)
    VALUES
    (1, '20200101', 10),
    (1, '20200102', 20),
    (1, '20200103', 30),
    (2, '20200101', 10),
    (3, '20200102', 20),
    (4, '20200103', 30);
    
    WITH  data
            AS (
                 SELECT [h].[CariNo], DAY([h].[Tarih]) AS gun, [h].[Miktar]
                 FROM   @Hareketler AS [h]
               ),
          pivoted
            AS (
                 SELECT CariNo, [1], [2], [3]
                 FROM   data PIVOT ( SUM(Miktar) FOR [gun] IN ( [1], [2], [3] ) ) pvt
               )
      SELECT c.[AdiSoyadi], [1], [2], [3]
      --SELECT c.[AdiSoyadi], COALESCE([1],0) [1], COALESCE([2],0) [2], COALESCE([3],0) [3]
      FROM @Cariler AS [c]
      left JOIN pivoted  ON [c].[CariNo] = [pivoted].[CariNo];
    
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    • Yanıt Olarak İşaretleyen canleveent 14 Nisan 2020 Salı 17:51
    14 Nisan 2020 Salı 16:48
  • Kisa yol demissin, sonradan farkettim. Yani sonuçta 0 yapacak isen, hepsine Coalesce() yazmak yerine bastan 0 veriyi ayarlayabilirsin:

    DECLARE @Cariler TABLE
      (
        CariNo INT IDENTITY PRIMARY KEY ,
        AdiSoyadi VARCHAR(20)
      );
    
    DECLARE @Hareketler TABLE
      (
        HareketNo INT IDENTITY PRIMARY KEY,
        CariNo INT,
        Tarih DATETIME ,
        Miktar INT
      );
    
    INSERT @Cariler 
      (AdiSoyadi)
      VALUES
      ('Ahmet'), ('Mehmet'), ('Can'),
      ('Levent'), ('Huseyin'), ('Suat');
    
    INSERT	@Hareketler
    (CariNo, Tarih, Miktar)
    VALUES
    (1, '20200101', 10),
    (1, '20200102', 20),
    (1, '20200103', 30),
    (2, '20200101', 10),
    (3, '20200102', 20),
    (4, '20200103', 30);
    
    WITH gunler (gun) AS 
    	(SELECT 1
    	UNION ALL
    	SELECT gun+1 FROM gunler
    	WHERE gun < 3),
    	c_g (CariNo, Gun) AS 
    	(SELECT CariNo, gunler.gun FROM gunler CROSS JOIN @Cariler),
    	data (cariNo, Gun, Miktar) AS
        (
            SELECT cg.CariNo, cg.Gun AS gun, COALESCE([h].[Miktar],0)
            FROM c_g cg
    		LEFT JOIN @Hareketler AS [h] ON cg.CariNo = h.CariNo and cg.gun = DAY(h.Tarih)
        ),
          pivoted
            AS (
                 SELECT CariNo, [1], [2], [3]
                 FROM   data PIVOT ( SUM(Miktar) FOR [gun] IN ( [1], [2], [3] ) ) pvt
               )
      SELECT c.[AdiSoyadi], [1], [2], [3]
      FROM @Cariler AS [c]
      left JOIN pivoted  ON [c].[CariNo] = [pivoted].[CariNo];
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    • Yanıt Olarak İşaretleyen canleveent 14 Nisan 2020 Salı 17:51
    14 Nisan 2020 Salı 17:11

Tüm Yanıtlar

  • Null ile 0 ayni şey degil. null iken o gun deger yok demek. Senin icin ayni anlama geliyorsa, nasıl istersen onu yapabilirsin. Ornek: (an altta iki farklı select var):

    DECLARE @Cariler TABLE
      (
        CariNo INT IDENTITY PRIMARY KEY ,
        AdiSoyadi VARCHAR(20)
      );
    
    DECLARE @Hareketler TABLE
      (
        HareketNo INT IDENTITY PRIMARY KEY,
        CariNo INT,
        Tarih DATETIME ,
        Miktar INT
      );
    
    INSERT @Cariler 
      (AdiSoyadi)
      VALUES
      ('Ahmet'), ('Mehmet'), ('Can'),
      ('Levent'), ('Huseyin'), ('Suat');
    
    INSERT	@Hareketler
    (CariNo, Tarih, Miktar)
    VALUES
    (1, '20200101', 10),
    (1, '20200102', 20),
    (1, '20200103', 30),
    (2, '20200101', 10),
    (3, '20200102', 20),
    (4, '20200103', 30);
    
    WITH  data
            AS (
                 SELECT [h].[CariNo], DAY([h].[Tarih]) AS gun, [h].[Miktar]
                 FROM   @Hareketler AS [h]
               ),
          pivoted
            AS (
                 SELECT CariNo, [1], [2], [3]
                 FROM   data PIVOT ( SUM(Miktar) FOR [gun] IN ( [1], [2], [3] ) ) pvt
               )
      SELECT c.[AdiSoyadi], [1], [2], [3]
      --SELECT c.[AdiSoyadi], COALESCE([1],0) [1], COALESCE([2],0) [2], COALESCE([3],0) [3]
      FROM @Cariler AS [c]
      left JOIN pivoted  ON [c].[CariNo] = [pivoted].[CariNo];
    
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    • Yanıt Olarak İşaretleyen canleveent 14 Nisan 2020 Salı 17:51
    14 Nisan 2020 Salı 16:48
  • Kisa yol demissin, sonradan farkettim. Yani sonuçta 0 yapacak isen, hepsine Coalesce() yazmak yerine bastan 0 veriyi ayarlayabilirsin:

    DECLARE @Cariler TABLE
      (
        CariNo INT IDENTITY PRIMARY KEY ,
        AdiSoyadi VARCHAR(20)
      );
    
    DECLARE @Hareketler TABLE
      (
        HareketNo INT IDENTITY PRIMARY KEY,
        CariNo INT,
        Tarih DATETIME ,
        Miktar INT
      );
    
    INSERT @Cariler 
      (AdiSoyadi)
      VALUES
      ('Ahmet'), ('Mehmet'), ('Can'),
      ('Levent'), ('Huseyin'), ('Suat');
    
    INSERT	@Hareketler
    (CariNo, Tarih, Miktar)
    VALUES
    (1, '20200101', 10),
    (1, '20200102', 20),
    (1, '20200103', 30),
    (2, '20200101', 10),
    (3, '20200102', 20),
    (4, '20200103', 30);
    
    WITH gunler (gun) AS 
    	(SELECT 1
    	UNION ALL
    	SELECT gun+1 FROM gunler
    	WHERE gun < 3),
    	c_g (CariNo, Gun) AS 
    	(SELECT CariNo, gunler.gun FROM gunler CROSS JOIN @Cariler),
    	data (cariNo, Gun, Miktar) AS
        (
            SELECT cg.CariNo, cg.Gun AS gun, COALESCE([h].[Miktar],0)
            FROM c_g cg
    		LEFT JOIN @Hareketler AS [h] ON cg.CariNo = h.CariNo and cg.gun = DAY(h.Tarih)
        ),
          pivoted
            AS (
                 SELECT CariNo, [1], [2], [3]
                 FROM   data PIVOT ( SUM(Miktar) FOR [gun] IN ( [1], [2], [3] ) ) pvt
               )
      SELECT c.[AdiSoyadi], [1], [2], [3]
      FROM @Cariler AS [c]
      left JOIN pivoted  ON [c].[CariNo] = [pivoted].[CariNo];
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    • Yanıt Olarak İşaretleyen canleveent 14 Nisan 2020 Salı 17:51
    14 Nisan 2020 Salı 17:11
  • Kisa yol demissin, sonradan farkettim. Yani sonuçta 0 yapacak isen, hepsine Coalesce() yazmak yerine bastan 0 veriyi ayarlayabilirsin:

    DECLARE @Cariler TABLE
      (
        CariNo INT IDENTITY PRIMARY KEY ,
        AdiSoyadi VARCHAR(20)
      );
    
    DECLARE @Hareketler TABLE
      (
        HareketNo INT IDENTITY PRIMARY KEY,
        CariNo INT,
        Tarih DATETIME ,
        Miktar INT
      );
    
    INSERT @Cariler 
      (AdiSoyadi)
      VALUES
      ('Ahmet'), ('Mehmet'), ('Can'),
      ('Levent'), ('Huseyin'), ('Suat');
    
    INSERT	@Hareketler
    (CariNo, Tarih, Miktar)
    VALUES
    (1, '20200101', 10),
    (1, '20200102', 20),
    (1, '20200103', 30),
    (2, '20200101', 10),
    (3, '20200102', 20),
    (4, '20200103', 30);
    
    WITH gunler (gun) AS 
    	(SELECT 1
    	UNION ALL
    	SELECT gun+1 FROM gunler
    	WHERE gun < 3),
    	c_g (CariNo, Gun) AS 
    	(SELECT CariNo, gunler.gun FROM gunler CROSS JOIN @Cariler),
    	data (cariNo, Gun, Miktar) AS
        (
            SELECT cg.CariNo, cg.Gun AS gun, COALESCE([h].[Miktar],0)
            FROM c_g cg
    		LEFT JOIN @Hareketler AS [h] ON cg.CariNo = h.CariNo and cg.gun = DAY(h.Tarih)
        ),
          pivoted
            AS (
                 SELECT CariNo, [1], [2], [3]
                 FROM   data PIVOT ( SUM(Miktar) FOR [gun] IN ( [1], [2], [3] ) ) pvt
               )
      SELECT c.[AdiSoyadi], [1], [2], [3]
      FROM @Cariler AS [c]
      left JOIN pivoted  ON [c].[CariNo] = [pivoted].[CariNo];



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    Teşekkürler abi, 👍
    14 Nisan 2020 Salı 17:52