加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

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

发布时间:2020-05-24 17:26:38 所属栏目:MsSql 来源:互联网
导读:这些是我最初检索到的行: 112 Cem Ceminay210 Ali Salih132 Gül Sen 现在我想将每一行复制为3行.所以新结果: 112 Cem Ceminay112 Cem Ceminay112 Cem Ceminay210 Ali Salih210 Ali Salih210 Ali Sali

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

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语句:

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 + ' adna '+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 yazdrlm olmal
        INNER JOIN BasilmisFaturalar ON BasilmisFaturalar.basilmisFatura_id = Faturalar.refBasilmisFatura_id
        -- Yazdrlm fatura iptal edilmemi olmal
        INNER JOIN BasiliFaturaIptalTalepleri ON BasiliFaturaIptalTalepleri.refBasilmisFatura_id <> BasilmisFaturalar.basilmisFatura_id
        -- Fatura Kurum Detaylarndan KURUM bilgilerine
        INNER JOIN KurumFaturaDetaylari ON KurumFaturaDetaylari.kurumFaturaDetay_id = BasilmisFaturalar.refKurumFaturaDetay_id
        -- Faturann kesildii kurum
        INNER JOIN Kurumlar ON Kurumlar.kurum_id = dbo.KurumFaturaDetaylari.refKurum_id
        -- Seanslar üzerinden Klinik bilgilerine bylece SAPcc,SAPba,ProfitCenter a ulayoruz
        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 aralnda 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

解决方法

为了帮助解释: Cartesian product/cross join背景
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,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 yazdrlm olmal
    INNER JOIN BasilmisFaturalar ON BasilmisFaturalar.basilmisFatura_id = Faturalar.refBasilmisFatura_id
    -- Yazdrlm fatura iptal edilmemi olmal
    INNER JOIN BasiliFaturaIptalTalepleri ON BasiliFaturaIptalTalepleri.refBasilmisFatura_id <> BasilmisFaturalar.basilmisFatura_id
    -- Fatura Kurum Detaylarndan KURUM bilgilerine
    INNER JOIN KurumFaturaDetaylari ON KurumFaturaDetaylari.kurumFaturaDetay_id = BasilmisFaturalar.refKurumFaturaDetay_id
    -- Faturann kesildii kurum
    INNER JOIN Kurumlar ON Kurumlar.kurum_id = dbo.KurumFaturaDetaylari.refKurum_id
    -- Seanslar üzerinden Klinik bilgilerine bylece SAPcc,ProfitCenter a ulayoruz
    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 aralnda olmal
    WHERE BasilmisFaturalar.duzenlemeTarihi BETWEEN DATEADD(m,GETDATE()) AND GETDATE() 
    GROUP BY Faturalar.faturaNo,Kurumlar.kurumAdi
    ) Singles
    CROSS JOIN
    (SELECT 1 AS foo UNION ALL SELECT 2 UNION ALL SELECT 3) Multiplier;

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读