sql serverdan crosstab query yaratmak

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Rica ederim, iyi çalışmalar.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
Bir şey daha srucam nu konuyla ilgisi yok ama varsa bununla ilgili bir konu beni yönlendirirseniz sevinirim :)

Ben exceldeki datalarımı vba kodu ile accesse aktarmak istiyorum.bunu nasıl yapabilirim?
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Tabii ki yapabilirsiniz. Bunun için, access tablonuzun veri tiplerini bilmeniz ve biraz da kod bilgisine sahip olmanız gereklidir.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
Private Sub DLZ_Table_Click()

Dim filepath As String
filepath = "C:\Users\Desktop\abcdef.xlsx"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "DLZTableUpdate(trial)", filepath, True, "A1:Q587"

End Sub

Bu kodu denedim ama istediğim rangi alıp seçmedi.accesste 2 satır doldurdu sadece onlar da karmakarışık
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
İşin bu kısmında access'le yoğun ilgilenen arkadaşlar yardımcı olabilir. Ya da döngü ile her satır için "insert" komutu aracılığıyla atılabilir.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
çok teşekkür ederim

No,
SUM(CASE WHEN [FNA] = '23' THEN CAST(working_days AS Numeric(10)) END) AS [23],
SUM(CASE WHEN [FNA] = '28' THEN CAST(working_days AS Numeric(10)) END) AS [28],
SUM(CASE WHEN [FNA] = '29' THEN CAST(working_days AS Numeric(10)) END) AS [29],
convert( varchar, max(dates), 104) as DATES
FROM dbo.DLZ__tbl
where working_days>0
GROUP BY DS_No
having SUM(CASE WHEN FNA = '23' THEN CAST(working_days AS Numeric(10)) END) is not null
and SUM(CASE WHEN FNA = '28' THEN CAST(working_days AS Numeric(10)) END) is not null
and SUM(CASE WHEN FNA = '29' THEN CAST(working_days AS Numeric(10)) END) is not null

nihai kodum böyle.Ben bir de userın girdiği yani update edilen tarihi göstermek istiyorum.Onun için de SELECT GETDATE() AS updated_dates dedim.Kod çalışıyor ama 2 Select atamak istemiyorum.Select siz nasıl yapabilirim bunu?
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Merhaba,
sorunuzu tam anlayamadım. Ben oracle üzerinde çalışıyorum. Tablolarda, eğer kod ile yazılmamışsa update tarihi yazmaz. Sql server için böyle bir özellik var mıdır bilmiyorum.
Kolay gelsin.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
Merhaba,
sorunuzu tam anlayamadım. Ben oracle üzerinde çalışıyorum. Tablolarda, eğer kod ile yazılmamışsa update tarihi yazmaz. Sql server için böyle bir özellik var mıdır bilmiyorum.
Kolay gelsin.

merhaba
Update tarihi de yazılsın istiyorum ve bunun kodu da var aslında yukarıda belirttiğim gibi ama select atıyor ben onu istemiyorum sadece.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Yukarıda yazdığımız sorgu ile gelmesini istiyorsunuz? ayrıca "getdate()" ifadesi sanırım sistem tarihini getiriyor.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
merhaba benim gene bir sorum var :)

SELECT
DS_No,
SUM(CASE WHEN [FNA] = '23' THEN CAST(working_days AS Numeric(10)) END) AS [23],
SUM(CASE WHEN [FNA] = '28' THEN CAST(working_days AS Numeric(10)) END) AS [28],
SUM(CASE WHEN [FNA] = '29' THEN CAST(working_days AS Numeric(10)) END) AS [29],
convert( varchar, max(dates), 104) as DATES
FROM dbo.DLZ__tbl
GROUP BY DS_No
having SUM(CASE WHEN FNA = '23' THEN CAST(working_days AS Numeric(10)) END) is not null
and SUM(CASE WHEN FNA = '28' THEN CAST(working_days AS Numeric(10)) END) is not null
and SUM(CASE WHEN FNA = '29' THEN CAST(working_days AS Numeric(10)) END) is not null

Bunu sorgulattığımda DS_No 23 28 29 DATES olarak 5 sütunda sonuçları veriyor.bu tamamdır.

ama tarihleri sırasıyla vermiyor.Ben tarihe göre sıralamak istiyorum ne yapmam gerek?
örnek olarak son kısımdan bir görüntü sunuyorum:
DS-xxxxxx 0 23 3 23.05.2014
DS-xxxxxx 5 23 5 05.06.2014
DS-xxxxxx 0 3 2 23.05.2014
DS-xxxxxx 0 2 3 23.05.2014
DS-xxxxxx 0 5 0 23.05.2014
DS-xxxxxx 0 2 3 23.05.2014
DS-xxxxxx 0 11 0 10.06.2014
DS-xxxxxx 7 13 2 26.06.2014

gördüğünüz gibi haziran ve mayıs iç içe.

formatlar:

DS_No nvarchar(50)
FNA smallint
working_days smallint
dates datetime

teşekkürler
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
bir de bir sorum daha var.bu ayları sıraladıktan sonra cumulative sum yaparak son 3 aylık 23 28 ve 29 iş paketlerini toplamak istiyorum.

yani haziran mayıs ve nisanı toplasın.bana haziran olarak göstersin
mayıs nisan martı toplasın bana mayıs olarak versin.

bu şekilde nasıl yapabilirim?
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
merhaba benim gene bir sorum var :)
ama tarihleri sırasıyla vermiyor.Ben tarihe göre sıralamak istiyorum ne yapmam gerek?
Sorgunun en sonuna
Kod:
order by DATES
ekleyiniz. Datanızın bir kısmını excel'e export edip ve Ds_no alanlarını değiştirerek yüklerseniz çözüm bulmamız daha kolay olacaktır.
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
teşekkürler
ekledim ama sıralamayı yıl-ay-gün olarak yapması gerekirken tam ters olarak günlere göre sıralamış.
DS-336259 23 0 7 01.08.2013
DS-336492 17 4 7 01.08.2013
DS-337815 13 0 2 01.08.2013
DS-xxxxxx 26 0 8 02.04.2013
DS-xxxxxx 29 1 25 02.05.2013
DS-xxxxxx 19 0 0 02.07.2013
DS-xxxxxx 19 0 0 02.07.2013
DS-xxxxxx 46 0 0 03.05.2013
DS-xxxxxx 28 5 12 03.10.2013

bunun gibi
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
teşekkürler
ekledim ama sıralamayı yıl-ay-gün olarak yapması gerekirken tam ters olarak günlere göre sıralamış.
DS-336259 23 0 7 01.08.2013
DS-336492 17 4 7 01.08.2013
DS-337815 13 0 2 01.08.2013
DS-xxxxxx 26 0 8 02.04.2013
DS-xxxxxx 29 1 25 02.05.2013
DS-xxxxxx 19 0 0 02.07.2013
DS-xxxxxx 19 0 0 02.07.2013
DS-xxxxxx 46 0 0 03.05.2013
DS-xxxxxx 28 5 12 03.10.2013

bunun gibi


bu sorunu hallettim ilk kodda convert vardı albuki ben değerleri datetime yapmıştım onu silip max(date) dedğimde tam sıralamayı verdi ama tarihin yanına 00:00:00.000 gibi şeyler gelsdi bu sefer de

DS-xxxxxx 0 2 3 2014-05-23 00:00:00.000
DS-xxxxxx 0 5 0 2014-05-23 00:00:00.000
DS-xxxxxx 0 2 3 2014-05-23 00:00:00.000
DS-xxxxxx 2 23 12 2014-06-04 00:00:00.000

gibi. onları nasıl yok edebilirim?
 
Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
bir de bir sorum daha var.bu ayları sıraladıktan sonra cumulative sum yaparak son 3 aylık 23 28 ve 29 iş paketlerini toplamak istiyorum.

yani haziran mayıs ve nisanı toplasın.bana haziran olarak göstersin
mayıs nisan martı toplasın bana mayıs olarak versin.

bu şekilde nasıl yapabilirim?

merhaba,
diğerleri önemli değil de daha çok bunu halletmek istiyorum.

moving average kodunu buldum ama nasıl uygulayacağımı anlayamadım.yardımcı olursanız çok sevinirim
 
Üst