2016-04-11 12 views
0

İki sonuç döndüren bir seçim sorgum var ve istediğim bir tablo türünde değişkene kaydetmek. Bu Yapıyorum nasıl: BuradaGüncelleştirme sql 2008'den sonra boş hücrelerin döndürülmesiyle ilgili tablo türü

declare @CompletedTotalValues table (CMedian int, CPerc int); 
update @CompletedTotalValues set CMedian = t.CMed, CPercentile = t.CPerc 
from(    
     Select CMed = dbo.median(case when cr.Priority = 1 then cr.Days else null end), 
      CPerc = dbo.Percentile90(case when cr.Priority = 1 then cr.Days else null end) 
     from A a inner join B b on b.Id = a.Id 
     where b.StatusId = 3 
) t; 

ben alt sorgu çalıştırdığınızda, ben CMED 25 olduğunu görmek ve CPerc (hiçbir değer bunu ben Select * from @CompletedTotalValues yürütmek, bunun hem sütun boş dönüyor, ancak 43 olduğunu) göstermektedir. Benim hatam nerede? Herhangi bir öneriyi takdir edeceksiniz

+0

Eğer bunu çalışıyor benim güncelleme sorgusu önce @CompletedTotalValues ​​değerler (0,0,0,0) takın eklerken ... – Jeremy

+0

Teşekkür Jeremy, GÜNCELLENECEK önce INSERT gerekiyor. –

+1

Ekleme mantığınız doğruysa, güncellemeniz gerekmemelidir ... Eklediğinizde doğru değerler olmalı, değil mi? – Jeremy

cevap

0

Niçin verileri ilk sırada değil?

DECLARE @CompletedTotalValues TABLE (CMedian INT, CPerc INT); 
INSERT @CompletedTotalValues (CMedian, CPerc) 
SELECT CMed = dbo.median(CASE WHEN cr.Priority = 1 THEN cr.Days END), 
     CPerc = dbo.Percentile90(CASE WHENn cr.Priority = 1 THEN cr.Days END) 
FROM A 
     INNER JOIN B ON b.Id = a.Id 
WHERE b.StatusId = 3; 
0

Paylaştığınız sorguya gidersem, tablo değişkenine hiç veri eklemeden güncellemeye çalışıyorsunuzdur. Bu mu?