一尘不染

如何在SQL Server中多次检索行?

sql

这些是我最初检索到的行:

112   Cem   Ceminay
210   Ali   Salih
132   G眉l   Sen

现在,我想克隆每一行,将其复制为3行。因此,新的结果是:

112   Cem   Ceminay
112   Cem   Ceminay
112   Cem   Ceminay
210   Ali   Salih
210   Ali   Salih
210   Ali   Salih
132   G眉l   Sen
132   G眉l   Sen
132   G眉l   Sen

什么样的选择陈述可以帮助我?

选择语句示例:

SELECT id,name,surname FROM people;

谢谢可爱的人…

PS:我的查询:

            SELECT 
        Faturalar.faturaNo
        ,Klinikler.SAPSirketKodu [COMPANY CODE]
        ,Klinikler.SAPBussinessArea [BUSINESS AREA]
        ,BasilmisFaturalar.basilmisFatura_id [REFERENCE]
        ,BasilmisFaturalar.duzenlemeTarihi [DOCUMENT DATE]
        ,BasilmisFaturalar.duzenlemeTarihi [BASELINE DATE]
        ,Kurumlar.sapKodu [ACCOUNT]
        ,Kurumlar.kurumAdi + ' ad谋na '+Faturalar.faturaNo+' nolu fatura' [TEXT]
        ,BasilmisFaturalar.kdvDahilToplamTutar [AMOUNT]
        ,BasilmisFaturalar.kdvHaricToplamTutar
        ,(BasilmisFaturalar.kdvDahilToplamTutar-BasilmisFaturalar.kdvHaricToplamTutar) AS kdvTutari
        ,CASE 
        WHEN BasilmisFaturalar.kdvOrani = 0 THEN 'A0'
        WHEN BasilmisFaturalar.kdvOrani = 8 THEN '2H'
        WHEN BasilmisFaturalar.kdvOrani = 18 THEN '3H'
        END [TAX CODE]
        ,Klinikler.profitCenter [COST CENTER/PROFIT CENTER]
        FROM Faturalar 
        -- Fatura yazd谋r谋lm谋艧 olmal谋
        INNER JOIN BasilmisFaturalar ON BasilmisFaturalar.basilmisFatura_id = Faturalar.refBasilmisFatura_id
        -- Yazd谋r谋lm谋艧 fatura iptal edilmemi艧 olmal谋
        INNER JOIN BasiliFaturaIptalTalepleri ON BasiliFaturaIptalTalepleri.refBasilmisFatura_id <> BasilmisFaturalar.basilmisFatura_id
        -- Fatura Kurum Detaylar谋ndan KURUM bilgilerine
        INNER JOIN KurumFaturaDetaylari ON KurumFaturaDetaylari.kurumFaturaDetay_id = BasilmisFaturalar.refKurumFaturaDetay_id
        -- Faturan谋n kesildi臒i kurum
        INNER JOIN Kurumlar ON Kurumlar.kurum_id = dbo.KurumFaturaDetaylari.refKurum_id
        -- Seanslar 眉zerinden Klinik bilgilerine b枚ylece SAPcc, SAPba, ProfitCenter a ula艧谋yoruz
        INNER JOIN Seanslar ON Seanslar.refFatura_id = Faturalar.fatura_id

        INNER JOIN dbo.Klinikler ON dbo.Klinikler.klinik_id = Seanslar.refKlinik_id
        -- Belirli bir d眉zenleme tarihi aral谋臒谋nda olmal谋
        WHERE BasilmisFaturalar.duzenlemeTarihi BETWEEN DATEADD(m,-1,GETDATE()) AND GETDATE() 
        GROUP BY Faturalar.faturaNo,BasilmisFaturalar.basilmisFatura_id,kdvDahilToplamTutar
        ,kdvHaricToplamTutar
        ,BasilmisFaturalar.kdvOrani
        ,BasilmisFaturalar.duzenlemeTarihi
        ,Kurumlar.sapKodu
        ,Klinikler.SAPBussinessArea
        ,Klinikler.SAPSirketKodu
        ,Klinikler.profitCenter
        ,Kurumlar.kurumAdi

阅读 204

收藏
2021-03-17

共1个答案

一尘不染

为了帮助说明:笛卡尔积/交叉联接背景

SELECT
    people.id, people.name, people.surname
FROM
    people
    CROSS JOIN
    (SELECT 1 AS foo UNION ALL SELECT 2 UNION ALL SELECT 3) bar;

在其他地方评论了大约7张桌子和42行之后

SELECT
    Singles.*
FROM
    (
    SELECT 
    Faturalar.faturaNo
    ,Klinikler.SAPSirketKodu [COMPANY CODE]
    ,Klinikler.SAPBussinessArea [BUSINESS AREA]
    ,BasilmisFaturalar.basilmisFatura_id [REFERENCE]
    ,BasilmisFaturalar.duzenlemeTarihi [DOCUMENT DATE]
    ,BasilmisFaturalar.duzenlemeTarihi [BASELINE DATE]
    ,Kurumlar.sapKodu [ACCOUNT]
    ,Kurumlar.kurumAdi + ' ad谋na '+Faturalar.faturaNo+' nolu fatura' [TEXT]
    ,BasilmisFaturalar.kdvDahilToplamTutar [AMOUNT]
    ,BasilmisFaturalar.kdvHaricToplamTutar
    ,(BasilmisFaturalar.kdvDahilToplamTutar-BasilmisFaturalar.kdvHaricToplamTutar) AS kdvTutari
    ,CASE 
    WHEN BasilmisFaturalar.kdvOrani = 0 THEN 'A0'
    WHEN BasilmisFaturalar.kdvOrani = 8 THEN '2H'
    WHEN BasilmisFaturalar.kdvOrani = 18 THEN '3H'
    END [TAX CODE]
    ,Klinikler.profitCenter [COST CENTER/PROFIT CENTER]
    FROM Faturalar 
    -- Fatura yazd谋r谋lm谋艧 olmal谋
    INNER JOIN BasilmisFaturalar ON BasilmisFaturalar.basilmisFatura_id = Faturalar.refBasilmisFatura_id
    -- Yazd谋r谋lm谋艧 fatura iptal edilmemi艧 olmal谋
    INNER JOIN BasiliFaturaIptalTalepleri ON BasiliFaturaIptalTalepleri.refBasilmisFatura_id <> BasilmisFaturalar.basilmisFatura_id
    -- Fatura Kurum Detaylar谋ndan KURUM bilgilerine
    INNER JOIN KurumFaturaDetaylari ON KurumFaturaDetaylari.kurumFaturaDetay_id = BasilmisFaturalar.refKurumFaturaDetay_id
    -- Faturan谋n kesildi臒i kurum
    INNER JOIN Kurumlar ON Kurumlar.kurum_id = dbo.KurumFaturaDetaylari.refKurum_id
    -- Seanslar 眉zerinden Klinik bilgilerine b枚ylece SAPcc, SAPba, ProfitCenter a ula艧谋yoruz
    INNER JOIN Seanslar ON Seanslar.refFatura_id = Faturalar.fatura_id

    INNER JOIN dbo.Klinikler ON dbo.Klinikler.klinik_id = Seanslar.refKlinik_id
    -- Belirli bir d眉zenleme tarihi aral谋臒谋nda olmal谋
    WHERE BasilmisFaturalar.duzenlemeTarihi BETWEEN DATEADD(m,-1,GETDATE()) AND GETDATE() 
    GROUP BY Faturalar.faturaNo,BasilmisFaturalar.basilmisFatura_id,kdvDahilToplamTutar
    ,kdvHaricToplamTutar
    ,BasilmisFaturalar.kdvOrani
    ,BasilmisFaturalar.duzenlemeTarihi
    ,Kurumlar.sapKodu
    ,Klinikler.SAPBussinessArea
    ,Klinikler.SAPSirketKodu
    ,Klinikler.profitCenter
    ,Kurumlar.kurumAdi
    ) Singles
    CROSS JOIN
    (SELECT 1 AS foo UNION ALL SELECT 2 UNION ALL SELECT 3) Multiplier;
2021-03-17