У меня есть одна необработанная таблица, где я хочу разделить одну строку на две строки в зависимости от категории.Мой код работает в соответствии с ожиданиями прямо сейчас.но я хочу удалить цикл while для выполнения этой задачи.
Я не могу сделать это с помощью массовой вставки, мой код не работает для большего количества записей, так как эту операцию я выполняю при загрузке в Excel.
CREATE TABLE #RAW_TABLE (ID INT IDENTITY(1,1),FIELD1 VARCHAR(100),CATEGORY VARCHAR(100))
INSERT INTO #RAW_TABLE (FIELD1,CATEGORY) VALUES ('DATA','SINGLE')
INSERT INTO #RAW_TABLE (FIELD1,CATEGORY) VALUES ('DATA','SINGLE')
INSERT INTO #RAW_TABLE (FIELD1,CATEGORY) VALUES ('DATA','SPLIT')
INSERT INTO #RAW_TABLE (FIELD1,CATEGORY) VALUES ('DATA','SINGLE')
INSERT INTO #RAW_TABLE (FIELD1,CATEGORY) VALUES ('DATA','SINGLE')
CREATE TABLE #PROCESSED_TABLE (ID INT IDENTITY(1,1),FIELD1 VARCHAR(100),CATEGORY VARCHAR(100))
Declare @Int int,@Field1 Varchar(100),@Category Varchar(100)
WHILE ((SELECT COUNT(*) FROM #RAW_TABLE) > 0)
BEGIN
PRINT ''
SELECT top 1 @Int = ID,@Field1 = FIELD1,@Category = CATEGORY FROM #RAW_TABLE
if(@Category = 'SPLIT')
begin
insert into #PROCESSED_TABLE (FIELD1,CATEGORY) values (@Field1 + '-1',@Category)
insert into #PROCESSED_TABLE (FIELD1,CATEGORY) values (@Field1 + '-2',@Category)
end
else
begin
insert into #PROCESSED_TABLE (FIELD1,CATEGORY) Values (@Field1,@Category)
end
Delete from #RAW_TABLE Where id = @Int
END
Select * From #PROCESSED_TABLE
Выход: -