在sql server中按列插入行

在sql server中按列插入行,sql,sql-server,pivot,Sql,Sql Server,Pivot,下面是我的表名:样本1 ID NAME ADDRESS 1 DAN NO.10,CHANGJIANG XI STREET,JIANXI DISTRECT ,LUOYANG CITY,HENAN ,CHINA 2 SAM BINALBAGAN NEGROS OCCIDENTAL PHILIPPINES 3 JOSE B-36 L-40 PH-1 ST. JOSEPH VILLAGE 7, MARINIG CABUYAO L

下面是我的表名:样本1

ID NAME                                 ADDRESS
1  DAN  NO.10,CHANGJIANG XI STREET,JIANXI DISTRECT ,LUOYANG CITY,HENAN ,CHINA
2  SAM  BINALBAGAN NEGROS OCCIDENTAL  PHILIPPINES
3  JOSE B-36 L-40 PH-1 ST. JOSEPH VILLAGE 7, MARINIG CABUYAO LAGUNA, 4025 
我需要将行输入到列,但这里的挑战是,在示例2中,我只有4列源行,在使用拆分函数时获得6行或更多,在列中插入数据后,如何在ADRS4中插入/追加余额数据

输出应如下所示:

ID  NAME                  ADRS1            ADRS2            ADRS3                ADRS4
1   DAN                   NO.10       NGJIANG XI STREET   JIANXI DISTRECT  LUOYANG CITY,HENAN ,CHINA  
如果要跳过一个值,只需输入一个空值。因此,您的查询应该如下所示:

INSERT INTO table_name (name,adrs1,adres2,...)
VALUES (John,Null,Xi Street,...);
CREATE TABLE [dbo].[Table_1](
    [id] [int] NULL,
    [name] [varchar](50) NULL,
    [ADRS1] [varchar](50) NULL,
    [ADRS2] [varchar](50) NULL,
    [ADRS3] [varchar](50) NULL,
    [ADRS4] [varchar](50) NULL
) ON [PRIMARY]
从IMO开始,您的SQL设计并不是很好,但这应该适用于您当前的设置。我将创建一个包含多列的表,然后根据需要插入,如下所示:

INSERT INTO table_name (name,adrs1,adres2,...)
VALUES (John,Null,Xi Street,...);
CREATE TABLE [dbo].[Table_1](
    [id] [int] NULL,
    [name] [varchar](50) NULL,
    [ADRS1] [varchar](50) NULL,
    [ADRS2] [varchar](50) NULL,
    [ADRS3] [varchar](50) NULL,
    [ADRS4] [varchar](50) NULL
) ON [PRIMARY]

你在这里面临的挑战是因为你的设计很差。您已将分隔数据存储在单个列中。这违反了1NF,是一个很难处理的问题。您必须首先解析此数据。然后,您必须使用Tab Alleman发布的问题中描述的技术将这些数据转回到列中。