Sql 从一个表中进行选择并在导入前对其进行修改

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

此后,我修改了这个过程,希望能简化。过去,我有两个表,tablename和result。Tablename有一个名为cnty的列(90的第56个),它是char(3)。第二个表result的字段基本上是000+cnty。此字段的标题为“区域”。我试图从tablename中插入cnty值,在开始处添加三个零,并将它们放在结果表的列area下

现在我的结果中有两列。这个区域现在是空白的。Cnty包含tablename中的值(其中79954个)

样本数据

 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);