2016-04-11 11 views
-1

ben şöyle verileri içeren bir tablo var - Herhangi bir işlev veya can senaryo var mıSQL - fraksiyonel biçimde sonuç çıkarma

-2 
-3/2 
-1 
-1/2 
    0 
    1/2 
    1 
    3/2 
    2 
    5/2 
    3 

-

MinFormat(int) MaxFormat(int) Precision(nvarchar) 
    -2    3    1/2 

Şimdi ben olarak SP sonucu istiyorum Buna benzer bir sonuç verilsin mi?

Fikir, maksimum sınır değerine (Tamsayı olarak MinFomrat sütun değeri) (tamsayı olarak MaxFormat Col değeri) kesin değere göre sonuç temeline dayalı sonuç üretmektir.

Bu nedenle, yukarıdaki örnekte, bir değer -2 başlayıp o 'ile başlamalıdır 3

+1

gelene kadar hassas değeri (1/2) göre aşağıdaki değerleri üretmelidir -2' 2'den daha kuzeyde? – Mark

+0

Aslında ne seçiyorsun? Tüm downvotes ile – Moogle

+3

biraz sert. Bana doğru bir soru gibi görünüyor –

cevap

0
WITH cte as 
(
    SELECT CAST(MinFormat as float) as data, MaxFormat, CAST(Precision as float) as Precision 
     FROM (VALUES (-2, 3, N'0.5')) as your_table(MinFormat, MaxFormat, Precision) 
    UNION ALL 
    SELECT CAST((data + Precision) as float) as data, MaxFormat, Precision 
     FROM cte 
     WHERE data + Precision <= MaxFormat 
) 
SELECT data FROM cte ORDER BY data OPTION (MAXRECURSION 0)