SQL sorgu yardım. çok satır tek satırda

Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba,

SQL konsunda pek bilgili değilim.
coalesce ve for xml path ile birşeyler yapmaya çalıştım ama yeterli olmadı.


Aynı Database de TABLO1 de aşağıdaki tablodaki bilgileri
kod kod2 digit
x1---k1---0
x1---k1---1
x1---k1---1
x2---k1---1
x2---k1---0
x2---k1---1
x3---k1---1
x3---k1---1
x3---k1---0

TABLO2 Aşağıdaki şekilde başka bir tabloya sql server da sorgu ile nasıl insert yapabilirim.
kod Kod2 digit
x1---k1---011
x2---k1---101
x3---k1---110

şağıdaki kodun sonucunda 011 olarak sonuç dönüyor.
Ancak benim elle x1 ve k1 değerlerini girmem gerekiyor.
Tüm sonuçları bu şekilde tablo2 ye nasıl aktarabilirim onu araştıryorum.

Kod:
select replace (
(
SELECT coalesce(tb1.digit,'') [data()]
  FROM TABLO1 tb1
  WHERE tb1.kod ='x1' and  tb1.kod2='k1'
  FOR XML PATH('')
  ),' ','')
 
Son düzenleme:

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

use veritabanı_ismi

DROP TABLE ana_tablo
select * into ana_tablo from tablo1 union all select * from tablo2


select * from ana_tablo
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba

use veritabanı_ismi

DROP TABLE ana_tablo
select * into ana_tablo from tablo1 union all select * from tablo2
select * from ana_tablo
Bu sorgu, tablo1 i ana_tablo ya kopyaladı.

Varsayılan durumda, tablo2 nin içi boş. Tablo1 deki
Aynı Database de TABLO1 de aşağıdaki tablodaki bilgileri
kod kod2 digit
x1---k1---0
x1---k1---1
x1---k1---1
x2---k1---1
x2---k1---0
x2---k1---1
x3---k1---1
x3---k1---1
x3---k1---0

TABLO2 ye Aşağıdaki şekilde nasıl insert yapabilirim.
Burada kod ve kod2 için aynı satırlar tek e düşürülürken, digit değerleri yanyana birleştirilerek tablo2 kayıt ediliyor.

kod Kod2 digit
x1---k1---011
x2---k1---101
x3---k1---110
 
Son düzenleme:

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Ben sorunuzu yanlış anlamışım.Tablo1 ve tablo2'yi başka bir tabloda birleştirme gibi.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Linkleri inceliyorum.

Sorgu hepsine x1 in birleştrilmiş değerini yazdı.

x1 011
x2 011
x3 011

Kod:
SELECT t1.KOD,
digit =REPLACE( (SELECT digit AS [data()]
FROM TABLO1 t2
WHERE t2.kod = t1.kod
ORDER BY digit
FOR XML PATH('')
), ' ', '')
FROM TABLO1 t1
GROUP BY kod ;
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bilgi için teşekkür ederim.

Bu şekilde sonuç aldım. Şimdi bunu başka bir tablo olarak insert yapabilirsem tamam olacak.

x1 k1 001
x2 k1 011
x3 k1 111

Kod:
drop table TABLO1
CREATE TABLE [dbo].[TABLO1]([ID] [int] IDENTITY(1,1) NOT NULL,
    [kod] [nchar](11) NOT NULL,
    [kod2] [nchar](11) NOT NULL,
    [digit] [bit] NULL)

insert into tablo1  values ('x1','k1','1')
insert into tablo1  values ('x1','k1','0')
insert into tablo1  values ('x1','k1','0')
insert into tablo1  values ('x2','k1','1')
insert into tablo1  values ('x2','k1','1')
insert into tablo1  values ('x2','k1','0')
insert into tablo1  values ('x3','k1','1')
insert into tablo1  values ('x3','k1','1')
insert into tablo1  values ('x3','k1','1')

 
SELECT t1.kod,t1.kod2,
       digits =REPLACE( (SELECT digit AS [data()]
           FROM tablo1 t2
          WHERE t2.kod = t1.kod
          ORDER BY digit
            FOR XML PATH('')
            ), ' ', '')
      FROM tablo1 t1
      GROUP BY kod,kod2
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba
drop table yenitabloismi
SELECT t1.kod,t1.kod2,
digits =REPLACE( (SELECT digit AS [data()]
FROM tablo1 t2
WHERE t2.kod = t1.kod
ORDER BY digit
FOR XML PATH('')
), ' ', '')
into yenitabloismi
FROM tablo1 t1
GROUP BY kod,kod2
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba
drop table yenitabloismi
SELECT t1.kod,t1.kod2,
digits =REPLACE( (SELECT digit AS [data()]
FROM tablo1 t2
WHERE t2.kod = t1.kod
ORDER BY digit
FOR XML PATH('')
), ' ', '')
into yenitabloismi
FROM tablo1 t1
GROUP BY kod,kod2
Yeni tabloya ekleme oldu.

Teşekkür derim.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Rica ederim , iyi çalışmalar
 
Üst