fbpx
Anasayfa » Forum

SQL server bir tabl...
 

[Çözüldü] SQL server bir tabloyu satırlara bölmek  

  RSS
cenkbaranak
(@cenkbaranak)
Üye

aşağıdaki gibi bir sql tablom var.

No StartDate  EndDate Budget
1 01.10.2019  07.10.2019 70000
2 08.10.2019  14.10.2019 35000

aşağıdaki gibi bir sonuç almak istiyorum SQL tarafında yardımcı olabilecek varsa sevinirim.

No Date  Budget
1 1.10.2019  10000
1 2.10.2019  10000
1 3.10.2019  10000
1 4.10.2019  10000
1 5.10.2019  10000
1 6.10.2019  10000
1 7.10.2019  10000
2 8.10.2019  5000
2 9.10.2019  5000
2 10.10.2019  5000
2 11.10.2019  5000
2 12.10.2019  5000
2 13.10.2019  5000
2 14.10.2019  5000

Alıntı
Gönderildi : 14/10/2019 14:19
Vedat Özer
(@vedatozerr)
Üye

Merhabalar,

Aşağıdaki sorguyu deneyebilir misiniz  ?

 


If(OBJECT_ID('tempdb..#TABLOBILGILERI') Is Not Null)
Begin
Drop Table #TABLOBILGILERI
End

;

CREATE TABLE #TABLOBILGILERI(
NO INT NULL,
StartDate DATETIME ,
EndDate DATETIME ,
Budget FLOAT NULL
)
;
INSERT INTO #TABLOBILGILERI
SELECT '1',CONVERT(DATE,'01.10.2019',104),CONVERT(DATE,'07.10.2019',104),'70000' UNION ALL
SELECT '2',CONVERT(DATE,'08.10.2019',104),CONVERT(DATE,'14.10.2019',104),'35000'

;WITH SAYILAR AS (
SELECT 1 AS N UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1
),
DIZISAYI AS (

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) - 1 AS N
FROM SAYILAR AS A, SAYILAR AS B
)
,
LISTE AS (
SELECT
T.Budget,
T.NO,
DATEADD(DAY, T2.N, T.StartDate) AS TARIH

FROM #TABLOBILGILERI AS T
CROSS APPLY (
SELECT TN.N
FROM DIZISAYI AS TN
WHERE TN.N <= DATEDIFF(DAY, T.StartDate, T.EndDate)
) AS T2
)

SELECT
NO,TARIH,CAST(ISNULL(H.Budget/NULLIF(S.SAYI,0),0) AS DECIMAL(38,2)) [BUDGET]
FROM LISTE AS H
CROSS APPLY(SELECT COUNT(*) SAYI FROM LISTE L WHERE L.NO=H.NO) AS S
ORDER BY 1,2
option (maxrecursion 0)

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 14/10/2019 15:18
cenkbaranak
(@cenkbaranak)
Üye

@vedatozerr

Öncelikle ilginiz için teşekkürler Veday bey, Sql sorgusunu bölüm bölüm açıklama şansınız var mı? Eğer mümkünse sevinirim yanlış bir şey yapmak istemiyorum. üstteki tablomun ismi "rezervasyon" tablosu. Bu tablodan aşağıda gerçekte olmayan bir tablo görüntülemek istiyorum aslında yeni bir tablo yazmak değil. 

CevapAlıntı
Gönderildi : 14/10/2019 15:43
cenkbaranak
(@cenkbaranak)
Üye

çok çok teşekkürler kardeşim hallettim yolladığın kod ile.

CevapAlıntı
Gönderildi : 14/10/2019 16:16
Vedat Özer
(@vedatozerr)
Üye

Merhaba,

Çözümü Tally ile yaptım. İnşAllah bununla ilgili İpucu bölümüne çeşitli örnekler vererek açıklama yaparım müsait bir zamanda. 

 

 

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
vedatozer@outlook.com

CevapAlıntı
Gönderildi : 14/10/2019 16:46
cenkbaranak
(@cenkbaranak)
Üye

@vedatozerr

Teşekkürler tekrardan bekliyoruz Allah'a emanet.

CevapAlıntı
Gönderildi : 17/10/2019 11:52
Vedat Özer beğendi
Paylaş:

Lütfen Giriş yap yada Kayıt ol