DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
	Altın Üyelik Hakkında Bilgi
Ben de aynı mantıkla böyle yapmayı denemiş ama hata alınca vazgeçip, mecburen biraz daha uzun yola gitmiştim..... Herhalde bir syntax hatası falan bir şey yapmışımdır.....Haluk Beyin müsadesiyle iki sorgusunun birleştirilmiş hali ve PQ çözümü
Sub getReport2()
'   Veysel Emre 14/03/2024
'   Alternatif kod
    Dim objConn As Object, RS As Object, SQLdata As String, strSQL As String, strArgs As String
    Sheets("Report").Range("A2:F" & Rows.Count).ClearContents
    Set objConn = CreateObject("ADODB.Connection")
    strArgs = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Readonly=False; DBQ=" & ThisWorkbook.FullName
    objConn.Open strArgs
    SQLdata = " Select [STOKKODU] AS SK, [MALINCINSI] AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, Sum([NETCIKIS]) AS NC, 2023 As Year" & _
              " From [2023$] Where [STOKKODU] Is Not Null " & _
              " Group By [STOKKODU], [MALINCINSI], [URUN KATEGORI], [URUN GRUPLARI] " & _
              " Union All " & _
              " Select [STOKKODU] AS SK, [MALINCINSI] AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, Sum([NETCIKIS]) AS NC, 2024 As Year" & _
              " From [2024$] Where [STOKKODU] Is Not Null" & _
              " Group By [STOKKODU], [MALINCINSI], [URUN KATEGORI], [URUN GRUPLARI]"
    strSQL = " Select SK, MC, UK, UG, Sum([NC2023]), Sum([NC2024]) From " & _
             "  ( " & _
             "    Select SK, MC, UK, UG, IIF(Year= 2023, NC) AS [NC2023], IIF(Year= 2024, NC) AS [NC2024] From " & _
             "       ( " & _
                       SQLdata & _
             "       )" & _
             "    )" & _
             " Group By SK, MC, UK, UG"
    Set RS = objConn.Execute(strSQL)
    Sheets("Report").Range("A2").CopyFromRecordset RS
    objConn.Close
    Set objConn = Nothing
End Sub
	@Haluk Bey emeğe gösterdiğiniz saygı için teşekkür ederim. Fakat burda asıl gayreti gösteren sizsiniz. Burada önemli olan 2 tablonun birleştirme fikri. Benim de daha önce forumda yaptığım örnek var fakat aklıma gelir miydi bilmiyorum. O yöntemle ilk çözümü sunmuşsunuz. Pivot fikri benim aklıma hiç gelmezdi. Bence en orjinal çözüm o fakat ağır çalışan bir yöntem.Alternatif icin Veysel Beyin eline saglik, ben sadece araciyim....![]()
Sub getData3()
    Sheets("Report").Range("A2:F" & Rows.Count).ClearContents
    With CreateObject("ADODB.Connection")
        .Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Readonly=False; DBQ=" & ThisWorkbook.FullName
        Sheets("Report").Range("A2").CopyFromRecordset .Execute( _
            " SELECT SK, MC, UK, UG,  SUM(NC2023) AS NC23, SUM(NC2024) AS NC24 FROM " & _
            " (  SELECT STOKKODU AS SK, MALINCINSI AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, NETCIKIS AS NC2023, 0 AS NC2024" & _
            "    FROM [2023$] WHERE STOKKODU IS NOT NULL " & _
            "    UNION ALL " & _
            "    SELECT STOKKODU AS SK, MALINCINSI AS MC, [URUN KATEGORI] AS UK, [URUN GRUPLARI] AS UG, 0 AS NC2023, NETCIKIS AS NC2024" & _
            "    FROM [2024$] WHERE STOKKODU IS NOT NULL " & _
            " ) GROUP BY SK, MC, UK, UG ")
        .Close
    End With
End Sub
	Bence yanılıyorsunuz... Kaynak var mı?..... Zaten SQL de gelecekte pek kullanılmayacak gibi. Sadece eskiye bağımlılıktan kullanılıyor. Bu konuda geliştirme yapan yok.....
Benim düşüncem bu. Halen 50 yıl öncesinin txt dosyalarının kullanıldığı bir dünyada SQL de kalkmaz ama ağırlığı gittikçe azalacak.Bence yanılıyorsunuz... Kaynak var mı?
Her database sisteminin kendi dil takımına ihtiyacı vardır ve olmak zorundadır. Bunları low-level native code gibi düşünün. Bir de basit kullanıcılar için, native code ile zor gelen işleri no-code veya high-level kodlama kullanan Power Query vs var. Sanırım kastettiğiniz bu...
Aslında bu kadar çok yazmayacaktım ama, SQL sever biri olarak, cümlelerinizi düzeltme gereği duydum.
.