34,838
社区成员




INSERT INTO [TEST]
VALUES('2020/5/1','张三',16.5),
('2020/5/1','张三',14.7),
……
('2020/5/1','张三',20.3);
declare @X nvarchar(20)
set @X = '2020/5/1','张三'
INSERT INTO [TEST]
VALUES(@X,16.5),
(@X,14.7),
……
(@X,20.3);
declare @X nvarchar(20)
set @X = '''2020/5/1'',''张三'''
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'INSERT INTO [TEST] VALUES('+@X+',16.5),('+@X+',14.7)';
select @sql
exec(@sql)
USE tempdb
GO
IF OBJECT_ID('test') IS NOT NULL
DROP TABLE test
GO
CREATE TABLE test(
d DATETIME,
n NVARCHAR(6),
v DECIMAL(10,1)
)
GO
---- 以上为创建测试表 --------
--1. 定义表变量
declare @X TABLE(d DATETIME,n NVARCHAR(6))
--插入到表变量
INSERT INTO @X(d,n)
select '2020/5/1','张三'
--2. 插入到目标表
INSERT INTO [TEST]
SELECT d,n,t.v
FROM @X CROSS APPLY(
SELECT 16.5 AS v
UNION ALL
SELECT 14.7
UNION ALL
SELECT 20.3
) AS t
SELECT * FROM test
/*
d n v
----------------------- ------ -------
2020-05-01 00:00:00.000 张三 16.5
2020-05-01 00:00:00.000 张三 14.7
2020-05-01 00:00:00.000 张三 20.3
*/