这些是我最初检索到的行:
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 + ' 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
解决方法
为了帮助解释:
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 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,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,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;