- Katılım
- 3 Eylül 2008
- Mesajlar
- 44
- Excel Vers. ve Dili
- 2010
Selamun aleyküm.
1. tablodaki verilerimi 2. tabloda arayıp birebir eşleştiriyorum. 2. tabloda aynı koşula uyan 1'den fazla kayıt olduğu için join fonksiyonları işimi görmüyor. Ben 1.tablodaki veriyi 2. tabloda şarta uyan ilk veriyle eşleştiriyorum.
Sayaçla 2 tabloyu karşılaştırıyorum ama verilerin çokluğu nedeniyle işlem 1 günden fazla sürüyor. Bu işi daha kısa sürede nasıl yapabilirim? Yardımlarınızı rica ederim.
Örnek Resim:
http://hizliresim.com/QYaGnA
1. tablodaki verilerimi 2. tabloda arayıp birebir eşleştiriyorum. 2. tabloda aynı koşula uyan 1'den fazla kayıt olduğu için join fonksiyonları işimi görmüyor. Ben 1.tablodaki veriyi 2. tabloda şarta uyan ilk veriyle eşleştiriyorum.
Sayaçla 2 tabloyu karşılaştırıyorum ama verilerin çokluğu nedeniyle işlem 1 günden fazla sürüyor. Bu işi daha kısa sürede nasıl yapabilirim? Yardımlarınızı rica ederim.
Örnek Resim:
Kod:
DECLARE @Sayac1 AS INT = ( SELECT COUNT(*) FROM #T1 );---50.000 adet veri
DECLARE @Sayac2 AS INT = ( SELECT COUNT(*) FROM #T2 );---100.000 adet veri
DECLARE @Siralama1 AS INT = 1;
DECLARE @Siralama2 AS INT = 1;
DECLARE @T1column1 VARCHAR(16), @T1column2 NUMERIC(25, 2), @T1column3 DATE;
DECLARE @T2column1 VARCHAR(16), @T2column2 NUMERIC(25, 2), @T2column3 DATE;
DECLARE @T2column4 INT;
DECLARE @T1column4 INT;
Goto1:
WHILE @Siralama1 <= @Sayac1
BEGIN
Goto2:
WHILE @Siralama2 <= @Sayac2
BEGIN
SELECT @T2column1 = Column1, @T2column2 = Column2, @T2column3 = Column3, @T2column4 = Column4 FROM #T2 WHERE Siralama2 = @Siralama2;
WHILE @T2column4 IS NULL
BEGIN
SELECT @T1column1 = Column1, @T1column2 = Column2, @T1column3 = Column3, @T1column4 = Column4 WHERE Siralama1 = @Siralama1;
WHILE @T1column1 = @T2column1 AND @T1column2 = @T2column2 AND @T1column3 >= @T1column3
BEGIN
UPDATE #T2
SET Column4 = @T1column4 WHERE Siralama2 = @Siralama2;
SET @Siralama1 = @Siralama1 + 1;
SET @Siralama2 = 1;
GOTO Goto1;
END;
SET @Siralama2 = @Siralama2 + 1;
GOTO Goto2;
END;
SET @Siralama2 = @Siralama2 + 1;
END;
SET @Siralama1 = @Siralama1 + 1;
SET @Siralama2 = 1;
END;
Son düzenleme: