如何将 01,02,03 之类的列分隔为 SQL 中的行?
How to separate column like 01,02,03 to rows in SQL?
CREATE TABLE Tabx_Test_Import
(
ID INT NOT NULL IDENTITY(1, 1),
Week NVARCHAR(2000),
Code NVARCHAR(20),
Amount NUMERIC(19, 6),
Name NVARCHAR(50),
Last_Name NVARCHAR(50),
RC NVARCHAR(11)
) ON [PRIMARY]
CREATE TABLE Tabx_Test_Inz
(
ID INT NOT NULL IDENTITY(1, 1),
Week INT NOT NULL,
RC NVARCHAR(10),
Code NVARCHAR(20),
Amount NUMERIC(19, 6),
) ON [PRIMARY]
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'01,02,03', N'012016A15', 11.50, N'Juraj', N'Novotný', N'050671/8652')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04,05,08', N'012016G45', 22.30, N'Peter', N'Pýchly', N'030888/3553')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'10,11,12,13', N'012016A18', 8.70, N'Juraj', N'Novotný', N'050671/8652')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04,05,06', N'012016T66', 12.12, N'Peter', N'Pýchly', N'030888/3553')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04', N'012016H11', 55.00, N'Peter', N'Pýchly', N'030888/3553')
每周将在一行中 - 导入 table 周数的记录必须被打破,因为代码和客户需要这么多行
用逗号分隔多少周。
表示一个星期,一个客户,一个代码在一行。
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,1,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,4,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,7,2),
REPLACE(RC,'/','') , Code, Anount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,10,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
我已经试过了...但是不正确。
您似乎想为 周 的每个不同值插入相同的行,您可以使用 string_split
来实现此目的:
insert into Tabx_Test_Inz (Week, RC, Code, Amount)
select value, replace(RC,'/',''), code, amount
from Tabx_Test_Import
cross apply String_Split(week,',')
CREATE TABLE Tabx_Test_Import
(
ID INT NOT NULL IDENTITY(1, 1),
Week NVARCHAR(2000),
Code NVARCHAR(20),
Amount NUMERIC(19, 6),
Name NVARCHAR(50),
Last_Name NVARCHAR(50),
RC NVARCHAR(11)
) ON [PRIMARY]
CREATE TABLE Tabx_Test_Inz
(
ID INT NOT NULL IDENTITY(1, 1),
Week INT NOT NULL,
RC NVARCHAR(10),
Code NVARCHAR(20),
Amount NUMERIC(19, 6),
) ON [PRIMARY]
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'01,02,03', N'012016A15', 11.50, N'Juraj', N'Novotný', N'050671/8652')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04,05,08', N'012016G45', 22.30, N'Peter', N'Pýchly', N'030888/3553')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'10,11,12,13', N'012016A18', 8.70, N'Juraj', N'Novotný', N'050671/8652')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04,05,06', N'012016T66', 12.12, N'Peter', N'Pýchly', N'030888/3553')
INSERT INTO Tabx_Test_Import (Week, Code, Amount, Name, Last_Name, RC)
VALUES (N'04', N'012016H11', 55.00, N'Peter', N'Pýchly', N'030888/3553')
每周将在一行中 - 导入 table 周数的记录必须被打破,因为代码和客户需要这么多行 用逗号分隔多少周。
表示一个星期,一个客户,一个代码在一行。
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,1,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,4,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,7,2),
REPLACE(RC,'/','') , Code, Anount
FROM
Tabx_Test_Import;
INSERT INTO Tabx_Test_Inz (Week, RC, Code, Amount)
SELECT
SUBSTRING(Week,10,2),
REPLACE(RC,'/','') , Code, Amount
FROM
Tabx_Test_Import;
我已经试过了...但是不正确。
您似乎想为 周 的每个不同值插入相同的行,您可以使用 string_split
来实现此目的:
insert into Tabx_Test_Inz (Week, RC, Code, Amount)
select value, replace(RC,'/',''), code, amount
from Tabx_Test_Import
cross apply String_Split(week,',')