none
mssql de satır coğaltma nasıl yapılır? RRS feed

  • Soru

  • merhaba

    tablo A

    adi        barkod       adet

    x           123456      3

    y            654321     10

    istediğim şu tablo A  daki stokları yeni oluşturacağım view B ye yazmak fakat her satırı view B ye alt alta adet sutununda yazan kadar yazdırmak

    görüntü view B

    adi       barkod     

    x          123456      )

    x          123456      )    .görüldüğü gibi 3 adet yazdı

    x          123456      )

    y          654321

    y          654321

    y          654321

    y          654321

    y          654321

    y          654321

    y          654321

    ......

    • Düzenleyen YLC_HRN 30 Ocak 2019 Çarşamba 11:57
    30 Ocak 2019 Çarşamba 08:15

Tüm Yanıtlar

  • Bu sanki on yüzün isi gibi aslında. Y'ne de SQL 'le yapılması gerekiyorsa:

    DECLARE @tabloA TABLE (adi VARCHAR(10), barkod VARCHAR(10), adet INT);
    INSERT @tabloA (adi,barkod,adet)
    VALUES
    ('x','123456',3),
    ('y','654321',10);
    
    WITH tally(N) AS
    (
      SELECT TOP(1000) 
      ROW_NUMBER() OVER (ORDER BY t1.object_id)
      FROM master.sys.all_columns t1 
      CROSS JOIN master.sys.all_columns t2 
    )
    SELECT a.adi, a.barkod
    FROM @tabloA a
    CROSS APPLY (SELECT TOP(a.adet) N FROM tally) t(N);

    • Düzenleyen CetinBasoz 30 Ocak 2019 Çarşamba 13:30
    • Yanıt Olarak Öneren Damla Aydemir 3 Temmuz 2020 Cuma 13:48
    30 Ocak 2019 Çarşamba 13:30
  • ÇETİN BEY MERHABA 

    GÖNDERDİĞİNİZ SQL DENEDİM LAKİN SORGU BOŞ GELİYOR.

    FARKLI BİR SQL İNİZ VARMI ACABA

    KOMUT BU YANLIŞLIK VAR MI

    DECLARE @DENEME TABLE (Adi VARCHAR(60),Renk_Adi VARCHAR(60),Barkod CHAR(20),Etiket_Tarihi smalldatetime,fiyat1 VARCHAR(20),Adet INT);


    WITH tally(N) AS
    (
      SELECT TOP(1000) 
      ROW_NUMBER() OVER (ORDER BY t1.object_id)
      FROM master.sys.all_columns t1 
      CROSS JOIN master.sys.all_columns t2 
    )
    SELECT a.Adi,a.Renk_Adi,a.Barkod,a.Etiket_Tarihi,a.fiyat1
    FROM @DENEME a
    CROSS APPLY (SELECT TOP(a.Adet) N FROM tally) t(N);

    31 Ocak 2019 Perşembe 11:31
  • Senin yazdiginla, benim yazdigim farklı. Benim yazdigimda "insert" ile veri ekleniyor. Senin tablo ise boş, dolayisiyla seninkinin boş gelmesi doğru sonuc.

    (büyük harfle yazmak, bağırmak anlamında). 

     
    31 Ocak 2019 Perşembe 13:23
  • HIMMM ANLADIM LAKİN BEN SORUYU SORARKEN YANLIŞ SORMUŞUM

    BENİM TABLOM DOLU, YANİ DOLU TABLO İÇİNDEKİ VERİLERİ VİEW İÇİNE TABLO İÇİNDEKİ ADET COLONUNDAKİ SAYILAR KADAR YAZACAK

    31 Ocak 2019 Perşembe 15:35
  • Tamam sana nasıl yapilacagini yukarida ornek kodla verdim. Istersen team ID ver, dogrudan senin tablon ile göstereyim (ama lütfen bağırma).

    (@Deneme yerine kendi tablo adini kullanmalıydın)

    Burada calışan ornek var.
    31 Ocak 2019 Perşembe 16:00