Çapraz Sorgu Hk.

12/10/2023, 17:09

snapper

Arkadaşlar Merhaba,

Veri tablosunda yer alan Veri1,veri2,veri3,veri4,veri5 ve veri6 alanlarında hangi hata kodundan kaç tane olduğunu günlük olarak yeni tabloya insert edilmesini istiyorum. Yeni tablodaki alan adları için hata tablosunda ki kodları kullanmasını istiyorum

Bir türlü yapamadım. Bu konuda yardımcı olursanız çok sevinirim.

Saygılarımla,







13/10/2023, 14:23

berduş

önce aşağıdaki gibi bir çapraz sorgu oluşturup, adı  xCpr olsun
TRANSFORM Count(xUn.xVeri) AS SayxVeri
SELECT xUn.xTarih, xUn.[Veri Adı]
FROM Hata INNER JOIN (SELECT Int([tarih]) AS xTarih, 'veri1' as [Veri Adı], [veri1] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri2' as [Veri Adı], [veri2] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri3' as [Veri Adı], [veri3] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri4' as [Veri Adı], [veri4] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri5' as [Veri Adı], [veri5] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri6' as [Veri Adı], [veri6] AS xVeri FROM Veri
)  AS xUn ON Hata.kod = xUn.xVeri
GROUP BY xUn.xTarih, xUn.[Veri Adı]
PIVOT xUn.xVeri;
sonrada aşağıdaki kodu bir düğmeye atayıp dener misiniz?
Sub xVeriEkle() ' 1, 3, 13, 108, 114, 132, 136, 140
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("xCpr")
   
    For x = 2 To rs.Fields.Count - 1
        xInsFld = xInsFld & ", [" & rs(x).Name & "]"
    Next x

xInsert = " INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı]" & xInsFld & ") " & _
          " SELECT xTarih, [Veri Adı]" & xInsFld & " " & _
          " FROM xCpr ;"
CurrentDb.Execute xInsert
End Sub
13/10/2023, 15:01

snapper

(13/10/2023, 14:23)berduş yazdı: önce aşağıdaki gibi bir çapraz sorgu oluşturup, adı  xCpr olsun
TRANSFORM Count(xUn.xVeri) AS SayxVeri
SELECT xUn.xTarih, xUn.[Veri Adı]
FROM Hata INNER JOIN (SELECT Int([tarih]) AS xTarih, 'veri1' as [Veri Adı], [veri1] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri2' as [Veri Adı], [veri2] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri3' as [Veri Adı], [veri3] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri4' as [Veri Adı], [veri4] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri5' as [Veri Adı], [veri5] AS xVeri FROM Veri
union All
SELECT Int([tarih]) AS xTarih, 'veri6' as [Veri Adı], [veri6] AS xVeri FROM Veri
)  AS xUn ON Hata.kod = xUn.xVeri
GROUP BY xUn.xTarih, xUn.[Veri Adı]
PIVOT xUn.xVeri;
sonrada aşağıdaki kodu bir düğmeye atayıp dener misiniz?
Sub xVeriEkle() ' 1, 3, 13, 108, 114, 132, 136, 140
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("xCpr")
   
    For x = 2 To rs.Fields.Count - 1
        xInsFld = xInsFld & ", [" & rs(x).Name & "]"
    Next x

xInsert = " INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı]" & xInsFld & ") " & _
          " SELECT xTarih, [Veri Adı]" & xInsFld & " " & _
          " FROM xCpr ;"
CurrentDb.Execute xInsert
End Sub

Hocam elinize sağlık çok güzel oldu.

Peki çapraz sorguda hata kodlarını satırlara veri adlarını sütunlara alırsam, bunu nasıl yeni tabloya insert edebilirim?


13/10/2023, 15:35

berduş

neyi hesaplayıp nereye aktarılacağını tam olarak anlamadım? resimdeki zaten eski tablo, yeni tabloya ne aktarılacak?
not: maalesef 1 ay kadar yokum daha fazla yardımcı olamayacağım