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