我想从表中选择2列,并为每个值分配一个int值。但是,我希望第一列ID对于所有相同的值都相同。
对于第二列,我希望每个值也要编号,但要按第一列进行分区。我已经弄清楚了这部分,但是我无法使第一部分开始工作。
这是我正在使用的测试方案。
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
您只需要使用其他排名功能,
dense_rank() OVER (ORDER BY Column1) as Column1_ID
http://msdn.microsoft.com/en-
us/library/ms173825.aspx
SQL小提琴:http
://www.sqlfiddle.com/#!6 /
d41d8/1832
问题内容: 我的数据库中有列,其中的值如下所示: 在虚拟列中没有任何编号。逗号分隔的值可以出现。我尝试了以下查询,但它正在创建重复的结果。 我不明白这个问题。谁能帮忙? 问题答案: 非常适合我- 还有许多其他方法可以实现它。阅读将单个逗号分隔的字符串拆分成行。 *关于使用列而不是单个字符串值时的重复项的 *更新 。只见PRIOR子句中使用DBMS_RANDOM的摆脱循环回路的在这里 尝试以下方法
问题内容: 我在MySQL中有一个函数,该函数返回由逗号分隔的整数值列表,从而形成一个字符串。 例如 退货 这是后端(Java)所需的简单功能-但是现在,由于建议了新功能,我需要这些结果用于另一个查询,该查询可能正在使用 IN 关键字遍历这些查询,如下所示: 作为单个csv元素,MyFunction(23)的结果不可迭代。如果我可以使用某些函数,例如可以生成结果的函数,则以下内容将非常适合我的查询
有没有非终端版本的或其他一些简洁的方式来流式传输生成的Map条目/值? 我发现自己想在分组后流过值但我能想到的最好的方法并不漂亮:
问题内容: 给定这样的假设查询: 并有一个类似于下面的表格: 所需结果: 有什么方法可以使用GROUP BY和LIKE语句(LIKE“ silver”,LIKE“ gold”,LIKE“ platinum”等)对这些条目进行分组? 问题答案: 您可以使用: 某些数据库允许您在中使用列别名。
问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做:
问题内容: 我有一些这样的数据: 我想查询它看起来像这样: …这样我就可以按数字连续的方式按GROUP BY分组。 另外,循环/游标也是不可能的,因为我正在处理大量数据,谢谢。 问题答案: