satırları yan yana toplama (Çözüldü)
satırları yan yana toplama (Çözüldü)
s.a.
Tablomda
aaaaa
bbbbb
ccccc
ddddd
eeeee
ffffffff
gibi kolonlar var ve bunların sayısı değişken. Rapor alırken bunları tek bir değişkene yan yana toplayabilirmiyim?
aaaaa bbbbb ccccc ddddd eeeee fffff
kolay gelsin
Tablomda
aaaaa
bbbbb
ccccc
ddddd
eeeee
ffffffff
gibi kolonlar var ve bunların sayısı değişken. Rapor alırken bunları tek bir değişkene yan yana toplayabilirmiyim?
aaaaa bbbbb ccccc ddddd eeeee fffff
kolay gelsin
En son m_ekici tarafından 16 Mar 2010 05:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: satırları yan yana toplama
eğer integer tipinde değilse saten araya + işareti koyarak istediğini yapabilirsin, yok integer tipinde ise
select cümlende varchara convert edip öyle topla
select cümlende varchara convert edip öyle topla
Kimseye hiçbir şey öğretemem, sadece onların düşünmelerini sağlayabilirim.
SOKRATES
SOKRATES
Re: satırları yan yana toplama
Eksik anlattım galiba
1. Tablom Stok Tablosu,
2. Tablom Stok Özellikleri tablos
(bu tabloda her stoğa atir özellikler kayıtlı.
aaaaa
bbbbb
ccccc
ddddd
eeeee
ffffffff
stok listesi alırken bu özellikleri yanına uzun olarak yazmak istiyorum
1. Tablom Stok Tablosu,
2. Tablom Stok Özellikleri tablos
(bu tabloda her stoğa atir özellikler kayıtlı.
aaaaa
bbbbb
ccccc
ddddd
eeeee
ffffffff
stok listesi alırken bu özellikleri yanına uzun olarak yazmak istiyorum
Kod: Tümünü seç
STOK KODU STOK ADI Özellikler
-------------------------------------
XXXXXXXXX YYYYYYYYYY aaaaa bbbbb ccccc
WWWWWWW TTTTTTTTTT bbbbb ccccc ddddd eeeee
OOOOOOOO PPPPPPPPPPP aaaaa bbbbb eeeee
Re: satırları yan yana toplama
detayını kullanımını pek bilmiyorum ama sanırım PIVOT bu işe yarıyordu, forumda da daha önce konuşulmuştu sanırım...
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: satırları yan yana toplama
Declare @sonuc nvarchar(max);
set @sonuc='';
Select @sonuc+=Ozellikler+' ' from TabloAdi
Select @Sonuc as "Ozellikler"
Sorgusu Bir Tablodaki İstediğin Alanları Yanyana Yazmaya yarar bu sorguyu kendine göre uyarlarsan sanırım istediğin olur.
set @sonuc='';
Select @sonuc+=Ozellikler+' ' from TabloAdi
Select @Sonuc as "Ozellikler"
Sorgusu Bir Tablodaki İstediğin Alanları Yanyana Yazmaya yarar bu sorguyu kendine göre uyarlarsan sanırım istediğin olur.
Kimseye hiçbir şey öğretemem, sadece onların düşünmelerini sağlayabilirim.
SOKRATES
SOKRATES
Re: satırları yan yana toplama
Bunun için bir fonksiyon yazıp bunun içinde tanımlayacağın curserü döngüye sokarak özelikleri yanyana toplamalı ve fonksiyondan bu sonucu döndürmelisiniz.
Bir kelimenin anlamını öğretsen bile yeter..



- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: satırları yan yana toplama
Geçenlerde benzeri bir soru benim de kafama takıldı. Mesela beyan edilen toplam değer ve bu toplamın geldiği evrak numaralarını tek sorguda getirebilecek bir fonksiyon yazma yöntemi çok işimize yarayacak sanırım. gibi tek sorguda sum benzeri çalışan kendi fonksiyonumuzu yazabilsek çok süper olacak. Henüz konuyla ilgili bir araştırmaya başlayamadım. Eğer bir sonuç elde edersem buradan paylaşırım (Bu örnek için 2. parametre Kod verilip cursor ile sonuç hesaplanabilir ama maksat sum gibi genel amaçlı ve hızlı çalışan bir fonksiyon yazmak. Bazı kayıtları kontrol için bu gibi bir fonksiyon lazım olabiliyor ve sum gibi genel amaçlı ve performanslı çalışan bir kod peşindeyim. 2. parametre ile tek tabloya özel fonksiyon yöntemi ile ilgilenmemekteyim
).
Kod: Tümünü seç
select Kod, sum(Toplam), Birlestir(EvrakNo) from tablo group by Kod

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: satırları yan yana toplama
Merhaba ben reçetedeki bileşenlerin hepsinin kodunu tek fieldta göstermek için şöyle bir yol çizmiştim. işinizi görür sanırım..
Kod: Tümünü seç
CREATE FUNCTION [dbo].[F_OZELLIKVER](@KOD VARCHAR(20))
RETURNS VARCHAR(400)
AS BEGIN
DECLARE @ADINE VARCHAR(100)
DECLARE @OZELLIK VARCHAR(400)
DECLARE ISIM CURSOR FOR
SELECT
BILESENKODU FROM
RECETE
WHERE MAMULKODU=@KOD -Siz buradaki selecti kendinize göre ayarlayın.
SET @OZELLIK = ''
SET @ADINE = ''
OPEN ISIM
FETCH NEXT FROM ISIM INTO @ADINE
WHILE @@FETCH_STATUS<>-1
BEGIN
SET @OZELLIK = @OZELLIK + ISNULL(@ADINE,'') + ','
FETCH NEXT FROM ISIM INTO @ADINE
END
SET @OZELLIK = SUBSTRING(@OZELLIK,0,LEN(@OZELLIK))
CLOSE ISIM
DEALLOCATE ISIM
RETURN SUBSTRING(@OZELLIK,0,400)
END
Bir kelimenin anlamını öğretsen bile yeter..



Re: satırları yan yana toplama
Firebird un bu işler için list fonksiyonu var.
Bu şekilde tablodaki alanadi virgullerle ayrılarak, listeleniyor. List fonksiyonu blob alan döndürüyor, çok büyük bilgi dönmesi sorun olmuyor.
Örnegin:
Dönen bilgiler:
http://www.firebirdsql.org/rlsnotesh/rl ... fb210-list
Kod: Tümünü seç
select list(alanadi) from tablo
Örnegin:
Kod: Tümünü seç
adresler tablosu
No - Adsoyad
1 - AHMET
2 - MEHMET
3 - ALİ
4 - HASAN
Kod: Tümünü seç
select list(adsoyad) as kisiler from adresler
Aşagıdaki satır döner
Kisiler
AHMET,MEHMET,ALi,HASAN
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: satırları yan yana toplama
Ahan da bunun SQL Server karşılığını lazım bana
.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: satırları yan yana toplama
Hoca yukarda yazdım ya. tablo ve fieldıda parametre olarak gönder olsun bitsinsabanakman yazdı:Ahan da bunun SQL Server karşılığını lazım bana.

Bir kelimenin anlamını öğretsen bile yeter..



Re: satırları yan yana toplama
Buldum

Kod: Tümünü seç
CREATE FUNCTION [dbo].[INFO_L01_OZELLIKAL] ( @StokId int )
RETURNS VARCHAR(400)
AS
BEGIN
DECLARE @OzlAdi varchar(400)
SELECT @OzlAdi=COALESCE(@OzlAdi + ' ', '') + ISNULL(K.ADI,'') FROM INFO_L01_001_STOKOZL SOZ
LEFT JOIN INFO_L01_KARTLAR K ON K.AKNO=SOZ.OZELLIK
WHERE STAKNO=@StokId
RETURN @OzlAdi
END
Kod: Tümünü seç
SELECT STK.AKNO,STK.KODU,STK.ADI,dbo.INFO_L01_OZELLIKAL(STK.AKNO) AS OZELLIK FROM INFO_L01_001_STOK STK
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: satırları yan yana toplama
Maksat örnek problemi çözmek değil, eğer varsa kümülatif değer üretebilen fonksiyon yazma tekniği. Örnek problem ise, sadece bu tekniği ifade edebilmek için basit bir problem hepsi buconari yazdı:Hoca yukarda yazdım ya. tablo ve fieldıda parametre olarak gönder olsun bitsinsabanakman yazdı:Ahan da bunun SQL Server karşılığını lazım bana.


Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: satırları yan yana toplama (Çözüldü)

İyi hocam kolay gelsin, bende tablo ve fieldi parametre olarak göndermeyi denemedim.
yukarıdaki fonksiyon bana şu şekilde tek field olarak veriyor,
Kod: Tümünü seç
'Boya, Bileşen1, Bileşen2, Bileşen3,...'
Bir kelimenin anlamını öğretsen bile yeter..



- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: satırları yan yana toplama (Çözüldü)
where şartları, order by sıralamarı, iç içe girmiş alt sorgular (sub query) ve daha neler neler
. Şu anda yine bir sorgu geliştirme işini yeni tamamlamış bulunmaktayım (dumanlar çıkartıyorum sanırım devrelerim yandı
) ve böyle bir fonksiyonum olsaydı çok işime yarayacaktı
. Hoş o olmadan da hallettik çok şükür ama daha bi kolay olacaktı işimiz
. Kör düvüşü yöntemiyle 1-2 dakikalık iş yarım saati aşacak kadar uzuyor
.







Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .