Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

group by yapmadan sql toplama

Konu, 'SQL' kısmında demir12 tarafından paylaşıldı.

  1. demir12

    demir12 Daimi Üye

    Kayıt:
    10 Eylül 2008
    Mesajlar:
    809
    Beğenilen Mesajlar:
    0
    Arkadaşlar bir tabloda




    sınıf,ebat,tür,renk1,renk2,stokmiktari

    kolonlarım var

    1.

    select sınıf,ebat,tür,renk1,renk2, SUM(stokmiktari)

    from ...


    group by sınıf,ebat,tür,renk1,renk2




    degilde


    2.

    select sınıf,ebat,tür,renk1,renk2, SUM(stokmiktari)

    from ...


    group by sınıf,ebat,tür



    olarak yazmak istiyorum.bu şekilde stok miktarları dogru geliyor.

    ancak renk1 ve renk2 group byda olmadıgı icin toplama yapamıyorum.hata veriyo nasıl cözebilirim bu durumu yardımcı olurmusunuz
     
  2. gk

    gk Üye

    Kayıt:
    24 Aralık 2009
    Mesajlar:
    146
    Beğenilen Mesajlar:
    21
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Aşağıdaki gibi belki olabilir :

    select sınıf,ebat,tür,MIN(renk1) AS renk1,MIN(renk2) AS renk2, SUM(stokmiktari) AS toplamstokmiktari
    from ...
    group by sınıf,ebat,tür
     
  3. gk

    gk Üye

    Kayıt:
    24 Aralık 2009
    Mesajlar:
    146
    Beğenilen Mesajlar:
    21
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Renklerin hepsini görmek istiyorsanız şöyle olabilir :
    select sınıf,ebat,tür, STRING_AGG(renk1, ',') AS renk1ler, STRING_AGG(renk2, ',') AS renk2ler, SUM(stokmiktari) AS toplamstokmiktari
    from ...
    group by sınıf,ebat,tür

    NOT : Sql Server kullanıldığını varsaydım.
     
  4. demir12

    demir12 Daimi Üye

    Kayıt:
    10 Eylül 2008
    Mesajlar:
    809
    Beğenilen Mesajlar:
    0
    hocam teşekkür ederim denedimde yine olmadı
     
  5. gk

    gk Üye

    Kayıt:
    24 Aralık 2009
    Mesajlar:
    146
    Beğenilen Mesajlar:
    21
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Bunu denediniz mi peki?
    select sınıf,ebat,tür, STRING_AGG(renk1, ',') AS renk1ler, STRING_AGG(renk2, ',') AS renk2ler, SUM(stokmiktari) AS toplamstokmiktari
    from ...
    group by sınıf,ebat,tür
     
  6. demir12

    demir12 Daimi Üye

    Kayıt:
    10 Eylül 2008
    Mesajlar:
    809
    Beğenilen Mesajlar:
    0
    evet hocam,

    yalnız STRING_AGG sql 2017 ile gelen bir metod sanırsam çalışmıyo
     
  7. demir12

    demir12 Daimi Üye

    Kayıt:
    10 Eylül 2008
    Mesajlar:
    809
    Beğenilen Mesajlar:
    0
    yani sınıf,ebat,tür bu şekilde grouplayınca toplam dogru çalışıyo.

    renkleri ekleyince group by da renkleri tanımlamazsam hata veriyo goup bya eklersem stok toplamında renkler karıştırıyo.

    ilk sorgu sonucuna stok miktarı yazmadan renkleri eklemem lazım
     
  8. gk

    gk Üye

    Kayıt:
    24 Aralık 2009
    Mesajlar:
    146
    Beğenilen Mesajlar:
    21
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Bir de şunu deneyiniz :
    select sınıf,ebat,tür, FIRST_VALUE(renk1) AS renk1, FIRST_VALUE(renk2) AS renk2, SUM(stokmiktari) AS toplamstokmiktari
    from ...
    group by sınıf,ebat,tür
     
  9. gk

    gk Üye

    Kayıt:
    24 Aralık 2009
    Mesajlar:
    146
    Beğenilen Mesajlar:
    21
    Meslek:
    Yazılım Geliştirici
    Şehir:
    İstanbul
    Şu siteye göre bir ifade yazdım : TSQL – Concatenate Rows using FOR XML PATH()

    select sınıf,ebat,tür, STUFF(( SELECT ',' + SUB.renk1 AS [text()]
    FROM MyTable SUB
    WHERE
    SUB.ID = T1.ID
    FOR XML PATH('')
    ), 1, 1, '' ) AS renk1ler, STUFF(( SELECT ',' + SUB2.renk2 AS [text()]
    FROM MyTable SUB2
    WHERE
    SUB2.ID = T1.ID
    FOR XML PATH('')
    ), 1, 1, '' ) AS renk2ler, SUM(stokmiktari) AS toplamstokmiktari
    from MyTable T1
    group by sınıf,ebat,tür
     
  10. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    897
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    @demir12
    anlayabilmemiz için örnek 5-6 tane kayıt koyabilirmisin, sadece ilgili alanlar ve key olan.? ve istediğin son görüntüyü. 4 alanda grup ve toplam isterken 2 alanın isimlerini yazsın istiyor gibi görünüyorsun.
    Pek anlaşılır değil.
     
  11. demir12

    demir12 Daimi Üye

    Kayıt:
    10 Eylül 2008
    Mesajlar:
    809
    Beğenilen Mesajlar:
    0
    sorguyu baştan ve farklı yazdım ilginize teşekürler
     
Benzer Konular
Yüklüyor...