2009-08-18 11 views
8

वर्तमान में मेरी SQL विवरण निम्नलिखितकैसे Microsoft SQL में बाल्टी में समूह के आंकड़ों के

SELECT NAME, ROUND([DR# BASE]/DAYS_WORKED,0) AS 'BASE/DAY' 
FROM MYTABLE 

है और आउटपुट डेटा निम्नलिखित

NAME BASE/DAY 
James 300 
Jane 310 
Jim 313 
John 325 
Jonah 400 

तरह लग रहा है वहाँ उत्पादन बनाने के लिए एक एसक्यूएल बयान है निम्नलिखित की तरह दिखते हो?

NAME BUCKET BASE/DAY 
James 300 <= 325 300 
Jane 300 <= 325 310 
Jim 300 <= 325 313 
John 300 <= 325 325 
Johnny 325 <= 350 329 
Jonah 350 <= 400 400 

उत्तर

9
SELECT NAME, 
CASE WHEN [BASE/DAY] <= 325 THEN '300 <= 325' 
    WHEN [BASE/DAY] <= 350 THEN '325 <= 350' 
    WHEN [BASE/DAY] <= 400 THEN '350 <= 400' 
END AS BUCKET, 
[BASE/DAY] 
FROM 
(
    SELECT NAME, ROUND([DR# BASE]/DAYS_WORKED,0) AS 'BASE/DAY' FROM MYTABLE 
) T 
ORDER BY 1, 2, 3 
+1

मुझे यह प्रश्न काम करने के लिए मिला ~ धन्यवाद! लेकिन ऐसा करने का एक और अधिक प्रभावी तरीका है, क्योंकि 25 की वृद्धि में मेरा डेटा रेंज 300 से 1000 तक चला जाता है, और यह बहुत सी रेखाएं होने जा रहा है। –

+0

रिचर्ड की क्वेरी को काम करना चाहिए, "MYTABLE से" को बदलें "टी" –

5
SELECT NAME, 
    [BASE/DAY], 
    CAST(([BASE/DAY]-1)/25) * 25 AS varchar(20)) + ' <= ' + 
    CAST(([BASE/DAY]-1)/25 + 1) * 25 AS varchar(20)) As Bucket, 
FROM 
    (SELECT Name, ROUND([DR# BASE]/DAYS_WORKED,0) AS [BASE/DAY] 
     FROM MYTABLE) T 

संपादित करें: कम बाल्टी के अंदर प्रकट करने के लिए सीमा मूल्यों तय की।

+0

क्षमा करें, मैं इसे काम करने के लिए नहीं मिला> _ < –

+0

"MYTABLE से") "मैटबल से") " –

+2

फिक्स्ड धन्यवाद गॉर्डन! मैं सीटीई द्वारा खराब कर दिया गया है। – richardtallent

संबंधित मुद्दे