Şu anda SSIS üzerinde çalışıyorum. İki sütunlu Başlangıç ve Bitiş tarihleri içeren bir tablom var. Aradaki günleri (başlangıç tarihi ve bitiş tarihi dahil) hesaplamalı ve diğer veriler tekrarlanarak her gün için bir satır oluşturmam gerekiyor. Ortaya çıkan tarihler yeni bir sütunda depolanmalıdır.iki tarih arasındaki farkı hesaplar ve her giriş için yeni satır oluşturur
-5
A
cevap
0
bu işi yapmaya hüner mümkün aralığındaki tüm günler listesini içeren bir tablo sahip olmaktır.
Aşağıdaki sorguda, MIN(Start)
kümemizin en küçük tarihini kullanarak bunu fake ediyorum.
Daha sonra sys.all_columns görünümlerimizdeki sütun sayısına bağlı olarak 1'den N'ye kadar bir sayı dizisi oluşturuyorum. Bu yeterli olabilir, ancak veri azlığına dayanarak, şimdilik işe yarıyor olabilir. Oluşturulan daha fazla aramaya ihtiyacınız varsa, Sys.all_coumns tablosunu kendiliğinden AÇINIZ.
Sonra aracılığıyla tarihlerin bir liste oluşturmak için oluşturulan numaralarını kullanabilirsinizdateadd
o zaman benim ALLDATES türetilmiş tablo almak ve Başlangıç ve Bitiş sütunları arasında ALLDATES için oluşturulan tarihini iğneleme, bir INNER orijinal tabloya JOIN gerçekleştirmek (son noktalar dahil).
CREATE TABLE dbo.so_36392684
(
WeekNo int NOT NULL
, Start datetime NOT NULL
, [End] datetime NOT NULL
, SpecialEvents varchar(20) NULL
);
INSERT INTO
dbo.so_36392684
(WeekNo, Start, [End], SpecialEvents)
VALUES
(
1
, '1989-09-14'
, '1989-09-20'
, NULL
);
SELECT
S.WeekNo
, S.Start
, S.[End]
, S.SpecialEvents
, ALLDATES.ConsecutiveDays
FROM
(
SELECT
DATEADD(DAY, D.rn, S.Start) AS ConsecutiveDays
FROM
(
-- Find the first date in our table
SELECT
MIN(S.Start) AS Start
FROM
dbo.so_36392684 AS S
) AS S
CROSS APPLY
(
-- Generate a (hopefully) sufficiently large enough set of dates
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1 AS rn
FROM
sys.all_columns AS AC
) D
) AS ALLDATES
INNER JOIN
dbo.so_36392684 AS S
ON ALLDATES.ConsecutiveDays >= S.Start
AND ALLDATES.ConsecutiveDays <= S.[End];
Sonucu İstediğiniz çıkışını göstermek gerekir bu
WeekNo Start End SpecialEvents ConsecutiveDays
1 1989-09-14 1989-09-20 NULL 1989-09-14
1 1989-09-14 1989-09-20 NULL 1989-09-15
1 1989-09-14 1989-09-20 NULL 1989-09-16
1 1989-09-14 1989-09-20 NULL 1989-09-17
1 1989-09-14 1989-09-20 NULL 1989-09-18
1 1989-09-14 1989-09-20 NULL 1989-09-19
1 1989-09-14 1989-09-20 NULL 1989-09-20
İlgili konular
- 1. Java'da iki tarih arasındaki zaman farkı
- 2. Farkı, iki tarih arasındaki saniye cinsinden nasıl kontrol ederim?
- 3. İki başlık arasındaki farkı alma
- 4. mySql, tarih farkının toplamını hesaplar
- 5. Her 2 ardışık eleman arasındaki farkı ayıklayın
- 6. Yeni hesaplar nasıl doğrulanır
- 7. SPARQL İki tarih arasındaki farkın hesaplanması
- 8. Android'de iki kez arasındaki farkı hesaplayın
- 9. iki tarih arasındaki bir tarih seçin
- 10. Tarih Farkı Ember.js'de Hesaplanıyor
- 11. Nasıl Python iki sözlükleri arasındaki farkı alınır?
- 12. İki tarih arasındaki ayları listele
- 13. Neden connect-mongo her istek için yeni bir oturum oluşturur?
- 14. arasındaki farkı nedir
- 15. Informatica: iki tablo arasındaki tarih alanını karşılaştırarak
- 16. İki satır arasındaki açı yanlış
- 17. Moment.js, UTC tarihleri arasındaki farkı
- 18. java tarih farkı bulmaca
- 19. Yeni satır
- 20. iki tarih
- 21. İki tarih arasındaki tüm saatleri nasıl seçerim?
- 22. İki dizeyi karşılaştırın ve farkı alın
- 23. UIView ve UIButton arasındaki animasyon farkı
- 24. HttpModule ve Global.aspx arasındaki performans farkı nedir?
- 25. sorgu toplam satır sayısı ve farklı satırlar arasındaki farkı almak için
- 26. GBM arasındaki bellek kullanımında Farkı ve blackboost
- 27. İki tarih arasındaki günler kendO DateTimePicker
- 28. İki görüntü arasındaki java yüzdesi bitmap piksel farkı
- 29. İki giriş için tek etiket
- 30. İki R listelenen liste arasındaki farkı nasıl alabilirim?
gibi görünmelidir. – artm
Kaynak, yukarıdaki ekran görüntüsünde belirtildiği gibi sütunları olan bir tabloyu belirtirsiniz. Bu SQL Server mı? Eğer öyleyse, hangi sürümü kullanıyorsunuz (2005, 2008, 2012, 2014, 2016)? – billinkc
"arası günler arası"? "sonuç tarihleri"? Ne istediğin belli değil. –