2013-11-27 5 views
23

के परिणाम सेट के लिए एक पंक्ति संख्या जोड़ें मेरे पास एक साधारण चयन कथन है। मैं एक अस्थायी कॉलम जोड़ना चाहता हूं जो मेरे परिणाम सेट में पंक्तियों की संख्या देगा। मैंने कोशिश की इस -एक SQL क्वेरी

declare @num int 
set @num = 0; 
select t.A, t.B, t.C, (@count + 1) as number 
from tableZ as t 

यह सभी पंक्तियों को 1 प्रदान करती है। मैंने @count = @count + 1 की कोशिश की और यह काम नहीं किया। मैं इस बात को सरल तरीके से कैसे कर सकता हूं?

धन्यवाद।

+0

आप पंक्ति संख्या को कैसे बढ़ाना चाहते हैं? मनमानी? आपकी क्वेरी में ऑर्डर नहीं है, इसलिए, आपको यह निर्धारित करने की आवश्यकता है कि आप ऑर्डरिंग की अपेक्षा करते हैं। –

+0

@AaronBertrand - मुझे केवल अपनी पंक्तियों की संख्या की आवश्यकता है। आदेश वास्तव में आवश्यक नहीं है। क्या इससे आपके प्रश्न का उत्तर मिलता है ? –

+0

तो आप आदेश के साथ यादृच्छिक रूप से लागू होने के ठीक हैं, और परिणाम हर बार एक असंगत आदेश में आपकी क्वेरी के लिए थूक रहे हैं? –

उत्तर

34

विशिष्ट पैटर्न इस प्रकार होगा, लेकिन आप (पंक्तियों की, एक अव्यवस्थित बैग के बाद से एक टेबल है, परिभाषा के द्वारा) वास्तव में परिभाषित करने के लिए कैसे आदेश लागू किया जाना चाहिए की जरूरत है:

SELECT t.A, t.B, t.C, number = ROW_NUMBER() OVER (ORDER BY t.A) 
    FROM dbo.tableZ AS t 
    ORDER BY t.A; 

सुनिश्चित नहीं हैं कि आपके प्रश्न में चर का प्रतिनिधित्व करना चाहिए (वे मेल नहीं खाते हैं)।

39
SELECT 
    t.A, 
    t.B, 
    t.C, 
    ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS number 
FROM tableZ AS t 

काम कर उदाहरण at SQLFiddle

बेशक

देखें, तो आप रो-नंबर आदेश को परिभाषित करने के लिए कर सकते हैं - यदि हां, तो सिर्फ एक सामान्य ORDER BY खंड में के लिए OVER (ORDER BY (SELECT 1)) स्वैप, उदाहरण के लिए, OVER (ORDER BY t.C), की तरह।

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