satırları yan yana toplama (Çözüldü)

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

satırları yan yana toplama (Çözüldü)

Mesaj gönderen m_ekici »

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
En son m_ekici tarafından 16 Mar 2010 05:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Rew33
Üye
Mesajlar: 70
Kayıt: 10 Tem 2009 02:28

Re: satırları yan yana toplama

Mesaj gönderen Rew33 »

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
Kimseye hiçbir şey öğretemem, sadece onların düşünmelerini sağlayabilirim.
SOKRATES
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: satırları yan yana toplama

Mesaj gönderen m_ekici »

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

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 
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: satırları yan yana toplama

Mesaj gönderen unicorn64 »

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...

Resim
Kullanıcı avatarı
Rew33
Üye
Mesajlar: 70
Kayıt: 10 Tem 2009 02:28

Re: satırları yan yana toplama

Mesaj gönderen Rew33 »

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.
Kimseye hiçbir şey öğretemem, sadece onların düşünmelerini sağlayabilirim.
SOKRATES
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: satırları yan yana toplama

Mesaj gönderen conari »

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..
ResimResim
Kullanıcı avatarı
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

Mesaj gönderen sabanakman »

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.

Kod: Tümünü seç

select Kod, sum(Toplam), Birlestir(EvrakNo) from tablo group by Kod
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 :mrgreen: ).
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: satırları yan yana toplama

Mesaj gönderen conari »

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..
ResimResim
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: satırları yan yana toplama

Mesaj gönderen emin_as »

Firebird un bu işler için list fonksiyonu var.

Kod: Tümünü seç

  select list(alanadi) from tablo
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:

Kod: Tümünü seç

adresler  tablosu
No  - Adsoyad
1 - AHMET
2 - MEHMET
3 - ALİ
4 - HASAN
Dönen bilgiler:

Kod: Tümünü seç

  select list(adsoyad) as kisiler from adresler
Aşagıdaki satır döner
  Kisiler
  AHMET,MEHMET,ALi,HASAN
http://www.firebirdsql.org/rlsnotesh/rl ... fb210-list
Kullanıcı avatarı
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

Mesaj gönderen sabanakman »

Ahan da bunun SQL Server karşılığını lazım bana :mrgreen: .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: satırları yan yana toplama

Mesaj gönderen conari »

sabanakman yazdı:Ahan da bunun SQL Server karşılığını lazım bana :mrgreen: .
Hoca yukarda yazdım ya. tablo ve fieldıda parametre olarak gönder olsun bitsin :D
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: satırları yan yana toplama

Mesaj gönderen m_ekici »

Buldum :D

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
Kullanıcı avatarı
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

Mesaj gönderen sabanakman »

conari yazdı:
sabanakman yazdı:Ahan da bunun SQL Server karşılığını lazım bana :mrgreen: .
Hoca yukarda yazdım ya. tablo ve fieldıda parametre olarak gönder olsun bitsin :D
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 bu :mrgreen: . Ayrıca, tabloyu da fieldıda parametre verince başka problemlere çakılıyorsun orası ayrı. Zaten ilgimi de çekmiyor :twisted: .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: satırları yan yana toplama (Çözüldü)

Mesaj gönderen conari »

:mrgreen:
İ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..
ResimResim
Kullanıcı avatarı
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ü)

Mesaj gönderen sabanakman »

where şartları, order by sıralamarı, iç içe girmiş alt sorgular (sub query) ve daha neler neler :twisted: . Şu anda yine bir sorgu geliştirme işini yeni tamamlamış bulunmaktayım (dumanlar çıkartıyorum sanırım devrelerim yandı :mrgreen: ) ve böyle bir fonksiyonum olsaydı çok işime yarayacaktı :wink: . Hoş o olmadan da hallettik çok şükür ama daha bi kolay olacaktı işimiz :N) :N) :N) . Kör düvüşü yöntemiyle 1-2 dakikalık iş yarım saati aşacak kadar uzuyor :N( .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla