Sql 从一个表中进行选择并在导入前对其进行修改
此后,我修改了这个过程,希望能简化。过去,我有两个表,tablename和result。Tablename有一个名为cnty的列(90的第56个),它是char(3)。第二个表result的字段基本上是000+cnty。此字段的标题为“区域”。我试图从tablename中插入cnty值,在开始处添加三个零,并将它们放在结果表的列area下 现在我的结果中有两列。这个区域现在是空白的。Cnty包含tablename中的值(其中79954个) 样本数据Sql 从一个表中进行选择并在导入前对其进行修改,sql,select,sql-update,ssms,Sql,Select,Sql Update,Ssms,此后,我修改了这个过程,希望能简化。过去,我有两个表,tablename和result。Tablename有一个名为cnty的列(90的第56个),它是char(3)。第二个表result的字段基本上是000+cnty。此字段的标题为“区域”。我试图从tablename中插入cnty值,在开始处添加三个零,并将它们放在结果表的列area下 现在我的结果中有两列。这个区域现在是空白的。Cnty包含tablename中的值(其中79954个) 样本数据 area employment
area employment busdesc cnty
410 gas station 003
期望结果
area employment busdesc cnty
000003 410 gas station 003
这就是你要找的语法吗
insert into dbo.result (name1, area)
select name1, '000' + cnty
from dbo.tablename;
或者,如果该表不存在:
select name1, ('000' + cnty) as area
into dbo.result
from dbo.tablename;
编辑:关于最后一条注释,让我们创建一个新的表Results2(因为我不知道表中的所有列)。该表将包含tablename的所有列以及new Area列
select *, '000' + cnty as AREA
into Results2
from dbo.tablename;
您必须指定每一列,或者在这种情况下,星号
*
可以执行以下查询:
update dbo.result
set area = concat('000',cnty);
希望有帮助 我是这方面的新手,还没有学会如何连接表。我假设当您键入“res”时,它是“Result”的缩写。是的,res是Result的别名,请参见
Select
语句中的。tbl是Originatable的别名(我不知道名字)。内部联接操作将一个表中的每个项匹配到另一个表中的相同键。在本例中,我不知道这是哪个键(可能是name1?),我将name1添加到示例数据中只是为了给它一些上下文。从“tablename”转到“result”时,它不会改变。我的“结果”表有29列,但其中只有一列发生了此更改。应该有一个键列(或一组列)以单音形式将一行与其他行标识开来。对于另一个具有cnty字段的表,也是如此,以匹配每一行;国家、账户和单位。它们是第1、4和5列。面积类型和面积分别为2和3。还有24个外键,但我知道如何处理它们。至于“tablename”表,没有主键。它是通过导入一个非常大的固定宽度文件创建的。编辑您的问题并添加两个表结构我必须重新导入源数据。有什么东西把它弄乱了。完成任务后,我将尝试此查询。@TimWilcox确定。。此后,我没有更改此过程。现在cnty和area在同一张表中。区域为空白,cnty为003(例如)。您的查询是否仍能完全按照编写的方式工作?@TimWilcox是否像您在结果表中添加了新的列area,现在您想基于cnty的值存储area的值?@TimWilcox尝试此查询并告诉我它是否工作(但必须如此):更新dbo.result r set r.area=concat('000',cnty);
update dbo.result
set area = concat('000',cnty);