• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

sql serverdan crosstab query yaratmak

Daha önce de söylediğim gibi, mssql ancak evde var. Akşam ilgileneceğim. İyi çalışmalar.
 
Merhaba,
aşağıdaki ifadeyi ekleyebilirsiniz. Kolay gelsin.

Kod:
format(max(try_convert( date, tarih,104)),'dd/MM/yyyy', 'en-US' ) as tarih
 
Merhaba,
aşağıdaki ifadeyi ekleyebilirsiniz. Kolay gelsin.

Kod:
format(max(try_convert( date, tarih,104)),'dd/MM/yyyy', 'en-US' ) as tarih

Merhaba teşekkür ederim,
Üstteki ifadeyi eski koddaki
convert( varchar, max(dates), 104) as DATES
satırından sonra ekedim fakat Incorrect syntax near 'format'. hatası verdi
 
Merhaba,
try_convert fonksiyonu SQL Server 2012 ile kullanılıyor. Format(...,'dd/MM/yyyy', 'en-US') bloğunu çıkararak deneyebilirsiniz. Veya aşağıdaki gibi de sıralayabilirsiniz.
Kod:
 convert(  varchar,max(concat(right(CONVERT(VARCHAR,tarih),4),SUBSTRING(CONVERT(VARCHAR,tarih),4,2),left(CONVERT(VARCHAR,tarih),2))),112)  as tarih
 
Merhaba,
try_convert fonksiyonu SQL Server 2012 ile kullanılıyor. Format(...,'dd/MM/yyyy', 'en-US') bloğunu çıkararak deneyebilirsiniz. Veya aşağıdaki gibi de sıralayabilirsiniz.
Kod:
 convert(  varchar,max(concat(right(CONVERT(VARCHAR,tarih),4),SUBSTRING(CONVERT(VARCHAR,tarih),4,2),left(CONVERT(VARCHAR,tarih),2))),112)  as tarih

Merhaba

Bu sefer de 'concat' is not a recognized built-in function name. diyor
Bir de bu kodları doğru yere yazıyorum değil mi ondan dolayı bu hatayı vermez sanırım ?
 
Merhaba, notebook'da Sql server 2012 express kurulu. Her iki sorgu da başarı ile çalıştı. Versiyonunuz farklı mıdır? Kodu biraz değişiklikle tekrar ekliyorum. Tarih, tarih1, tarih2 şekinde üç ayrı kolon oluşturacaktır.
Kod:
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(tarih), 104) as tarih,
format(max(try_convert( date, tarih,104)),'dd/MM/yyyy', 'en-US' ) as tarih1,
max(concat(right(CONVERT(VARCHAR,tarih),4),SUBSTRING(CONVERT(VARCHAR,tarih),4,2),left(CONVERT(VARCHAR,tarih),2)))  as tarih2
FROM dbo.ELZ_tbl
GROUP BY DS_No
 
Son düzenleme:
merhaba
tarih sorununu hallettim.serverda silip yeniden yaratıp veri tipini datetime yaptığımda istediğim sonucu verdi.gayretlerin için teşekkür ederim.

peki bu 3 paketi saydırmayı nasıl yapabilirim?Yani 23,28 ve 29u ayrı sütunlar olarak veriyor bize.benim istediğim her 3 paketi de içeren satırı versin.bir nevi exceldeki count methodu
 
merhaba
tarih sorununu hallettim.serverda silip yeniden yaratıp veri tipini datetime yaptığımda istediğim sonucu verdi.gayretlerin için teşekkür ederim.

peki bu 3 paketi saydırmayı nasıl yapabilirim?Yani 23,28 ve 29u ayrı sütunlar olarak veriyor bize.benim istediğim her 3 paketi de içeren satırı versin.bir nevi exceldeki count methodu

yani aslında null olmayan satırları bana versin
 
Merhaba, 1. mesajınızdaki data üzerinde almak istediğiniz sonuç nasıl olmalıdır, örnek verirseniz daha iyi olur. İyi akşamlar.
 
Merhaba,
ancak şimdi inceleyebildim. Kodu aşağıdaki gibi değiştiriniz.
İyi çalışmalar.

Kod:
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(tarih), 104) as tarih
FROM dbo.ELZ_tbl
GROUP BY DS_No


bu kod sonucu 23, 28, 29 ve max. tarih çıktılarını ayrı sütunlarda görebiliyorum. ama bu sütunlardaki her değerler dolu değil bazıları null yani karşılığı yok. ben de bu her üç pakete sahip (23,28,29) yani üçünde de bir değer bulunan satırları göstermesini istiyorum. umarım anlatabilmişimdir
 
Örnek SQL Db yi upload edebilir misiniz ?
 
Merhaba
iş yerinde olduğum için upload edemem ama şöyle açıklayayım

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

Bu kodu çalıştırdığımda bana aşağıdakini veriyor.
DS_No 23 28 29 DATES
NULL NULL NULL NULL NULL
DS-xxxxxx NULL 10 2 14.01.2014
DS- xxxxxx NULL 4 14 23.01.2014
DS- xxxxxx NULL 5 7 14.01.2014
DS- xxxxxx 3 7 0 13.02.2014
DS- xxxxxx 23 14 3 09.04.2014
DS- xxxxxx 3 7 30 15.05.2014
DS- xxxxxx 22 15 0 12.05.2014
DS- xxxxxx 4 14 6 15.05.2014
DS- xxxxxx 2 23 NULL 16.05.2014
DS- xxxxxx 0 NULL NULL 22.05.2014
DS- xxxxxx 0 NULL NULL 22.05.2014

Ben istiyorum ki içerisinde null olan satırları bana göstermesin
 
Merhaba,
sorgunun son kısmına yeşil olan bölümü ekler misiniz.

Kod:
GROUP BY DS_No
[COLOR=Green]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[/COLOR]
 
Son düzenleme:
merhaba
kod çalıştı ama sadece ilk satırdaki null lar gitti. diğerleri duruyor
 
Merhaba bir sorum daha var diğerine göre daha basit

DS_No activities
aaaa 1
aaaa 1
aaaa 1
bbbb 1
bbbb 1
cccc 1
cccc 1
cccc 1


bunu

DS_No activities
aaaa 3
bbbb 2
cccc 3

şeklinde nasıl yazabilirim?
 
Bir önceki sorununuz için 33 no'lu mesajdaki kodu deneyiniz.
son sorunuz için
Kod:
select DS_No,sum(activities) from tablo_adı group by DS_No
İyi çalışmalar.
 
Son düzenleme:
çok teşekkür ederim 2 kod da çalıştı. içinde null olan satırları sildik peki gene aynı mantıkla içinde 0 (sıfır) olan satırları nasıl silebiliriz?
 
Tablonuzda "working_days" alanında 0 olan değerler mi var? Sadece açıklamalarınız ile simüle etmeye çalışmak zorundayım. Aslında xls formatında belli bir veri örneği (özel bilgiler olmamak kaydıyla) eklebilseniz çok daha hızlı sonuçlar bulabiliriz. Eğer yukarıda yazdığım gibi ise aşağıdaki yeşil kodu
ekleyiniz.
Kod:
...
FROM dbo.tablo_adı
[COLOR=Green]where working_days>0[/COLOR]
GROUP BY DS_No
...
not: Ayrıca, silmiyoruz, sadece seçmiyoruz :)
 
Son düzenleme:
aıklamanız için teşekkür ederim pazartesi deneyeceğim :)
 
Tablonuzda "working_days" alanında 0 olan değerler mi var? Sadece açıklamalarınız ile simüle etmeye çalışmak zorundayım. Aslında xls formatında belli bir veri örneği (özel bilgiler olmamak kaydıyla) eklebilseniz çok daha hızlı sonuçlar bulabiliriz. Eğer yukarıda yazdığım gibi ise aşağıdaki yeşil kodu
ekleyiniz.
Kod:
...
FROM dbo.tablo_adı
[COLOR=Green]where working_days>0[/COLOR]
GROUP BY DS_No
...
not: Ayrıca, silmiyoruz, sadece seçmiyoruz :)


teşekkür ederim :)
 
Geri
Üst