Sql 选择不同的值并插入到表中

Sql 选择不同的值并插入到表中,sql,select,sql-server-2012,distinct,sql-insert,Sql,Select,Sql Server 2012,Distinct,Sql Insert,我希望获取一个值重复多次的列,只获取该值一次,并将其存储以供以后使用,但同时我希望在同一行中获取另一个值作为该不同列 A B C 32263 123456 44 32263 123456 45 32263 123456 46 32264 246802 44 32263 246802 45 32264 246802 46 32265 369258 44 32265 369258 45 32265 369258 46 A、 B,C代表三列。

我希望获取一个值重复多次的列,只获取该值一次,并将其存储以供以后使用,但同时我希望在同一行中获取另一个值作为该不同列

A      B       C
32263  123456  44
32263  123456  45
32263  123456  46
32264  246802  44
32263  246802  45
32264  246802  46
32265  369258  44
32265  369258  45
32265  369258  46
A、 B,C代表三列。暂时忽略C

我的问题是:如何在这个表中获取这些信息并将其存储起来,以便以后在脚本中使用

以下是我尝试过的:

use databaseName

select distinct A from tableName
order by A
结果是:

A
32263
32264
32265
我想让它也给我B的值。(注意,我得到哪一行并不重要,因为无论我选择什么A,对于给定的A,B的值都是相同的。)我们现在忽略C

结果应该是:

A      B
32263  123456
32264  246802
32265  369258
现在,一旦我得到这样的结果,我想使用从查询中得到的值插入一行。这就是C的作用。我想这样做:

use databaseName

insert into tableName (A, B, C)
values (32263, 123456, 47)
当然,我不想把这些值直接放在里面,而是要有某种类型的循环,循环遍历我找到的3个不同的A值中的每一个

简言之,我的表格应该是:

A      B       C
32263  123456  44
32263  123456  45
32263  123456  46
32264  246802  44
32263  246802  45
32264  246802  46
32265  369258  44
32265  369258  45
32265  369258  46
致:

我在新添加的行旁边放置了破折号,以帮助您查看更改

我想我也许应该做一些循环,循环所有三个不同的A值,但我的问题是如何做到这一点


谢谢您的时间。

您可以使用
插入到。。。选择此页上的
语句

INSERT INTO tableName (A, B, C)
SELECT A, B, MAX(C) + 1
FROM tableName
GROUP BY A, B

如果我了解您要正确完成的任务,您应该能够做到:

INSERT INTO Table
SELECT A, B, MAX(C) + 1
FROM Table
GROUP A, B

这应该为
a
B
以及增量
C
的每个不同组合插入一行,这可以使用窗口功能完成

INSERT INTO TABLENAME (A, B, C)
SELECT A, B, C + 1
FROM(
select A, B, C, MAX(C) OVER(PARTITION BY A, B) AS MAXC
FROM TABLENAME 
) AS NEW_ROWS
WHERE C = MAXC
试试这个:

SELECT * INTO new_table FROM
   (SELECT DISTINICT * FROM table_name) x

这将添加许多重复项,OP只希望每个分组有一行。@GoatCO将我的查询更新为筛选。A组将工作大部分时间,直到你只想由A组。只是想介绍窗口函数,因为它们是非常有用的。有一个错误<代码> 32263 < /代码>中的<代码> 32264 < /代码>章节。睁开眼睛从填充的表导入代码表:
INSERT INTO code\u mst(code\u值,code\u字段)从app\u mst中选择不同的app\u品牌,'app\u品牌
SELECT * INTO new_table FROM
   (SELECT DISTINICT * FROM table_name) x