पर समूहित किया गया है, मैं तालिका से 2 कॉलम चुनना चाहता हूं, और प्रत्येक मान को एक int मान असाइन करना चाहता हूं। हालांकि, मैं चाहता हूं कि पहला कॉलम आईडी सभी मानों के लिए समान हो।SQL सर्वर में पंक्ति संख्या असाइन करना, लेकिन मान
दूसरे कॉलम के लिए, मैं चाहता हूं कि प्रत्येक मान को भी क्रमांकित किया जाए, लेकिन पहले कॉलम द्वारा विभाजित किया गया हो। मैंने यह टुकड़ा निकाला है, लेकिन मुझे काम करने वाला पहला हिस्सा नहीं मिल सकता है।
यहां परीक्षण परिदृश्य है जिसका मैं उपयोग कर रहा हूं।
DECLARE @TestTable as Table (Column1 char(1), Column2 char(1))
INSERT INTO @TestTable SELECT 'A','A'
INSERT INTO @TestTable SELECT 'A','B'
INSERT INTO @TestTable SELECT 'A','C'
INSERT INTO @TestTable SELECT 'B','D'
INSERT INTO @TestTable SELECT 'B','E'
INSERT INTO @TestTable SELECT 'B','F'
INSERT INTO @TestTable SELECT 'B','G'
INSERT INTO @TestTable SELECT 'B','H'
INSERT INTO @TestTable SELECT 'C','A'
INSERT INTO @TestTable SELECT 'C','B'
INSERT INTO @TestTable SELECT 'C','C'
SELECT
Row_Number() OVER (Partition BY Column1 ORDER BY Column1) as Column1_ID,
Column1,
Row_Number() OVER (Partition BY Column1 ORDER BY Column1, Column2) as Column2_ID,
Column2
FROM @TestTable
जब मैं इस चलाने के लिए, Column2_ID में मान सही हैं, लेकिन मैं के लिए Column1_ID इस प्रकार होने के लिए मान चाहते हैं।
Column1_ID Column1 Column2_ID Column2
1 A 1 A
1 A 2 B
1 A 3 C
2 B 1 D
2 B 2 E
2 B 3 F
2 B 4 G
2 B 5 H
3 C 1 A
3 C 2 B
3 C 3 C
+1 छोड़कर आप 'partition' नहीं करना चाहती अन्यथा, वे सभी मूल्य '1' के साथ बाहर आते हैं: http://www.sqlfiddle.com/#!6/d41d8/1829 – mellamokb
यूप, बस एहसास हुआ कि मुझे इसे हटा दिया गया है: http://www.sqlfiddle.com/#! 6/d41d8/1832 – Andrew
मैंने उस समाधान की कोशिश की (जैसा कि आपने मूल रूप से पोस्ट किया था) और यह काम नहीं किया। मुझे नहीं पता था कि विभाजन वैकल्पिक था। धन्यवाद। यह वही करता है जो मुझे चाहिए। –