Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL INSERT从两个列表中插入多条记录_Sql Server - Fatal编程技术网

Sql server 使用SQL INSERT从两个列表中插入多条记录

Sql server 使用SQL INSERT从两个列表中插入多条记录,sql-server,Sql Server,我有一份员工编号清单和日期清单。我想在表中为每个员工编号和日期插入一行 皇帝(1,2,3,4,5) 日期(‘2020-04-06’、‘2020-04-07’、‘2020-04-08’、‘2020-04-09’、‘2020-04-10’) 我可以使用: BEGIN TRAN SET XACT_ABORT ON INSERT INTO TABLE1 (EMPNUM, DATE) VALUES (1, '2020-04-06') (1, '2020-04-07') e

我有一份员工编号清单和日期清单。我想在表中为每个员工编号和日期插入一行

  • 皇帝(1,2,3,4,5)
  • 日期(‘2020-04-06’、‘2020-04-07’、‘2020-04-08’、‘2020-04-09’、‘2020-04-10’)
我可以使用:

BEGIN TRAN
SET XACT_ABORT ON

INSERT INTO TABLE1 (EMPNUM, DATE)
VALUES (1, '2020-04-06')
       (1, '2020-04-07')
       etc.
但这需要手动创建大量记录


有没有更简单的方法来实现我的目标?

听起来像是交叉连接,例如

with empnums as
(
  select cast(value as int) empnum from openjson('[1,2,3,4,5,6]')
), dates as
(
  select cast(value as date) date from openjson('["20200406","20200407","20200408","20200409"]')
)
select *
from empnums
cross join dates 

您可以将
交叉联接
与值一起使用:

insert into table1 (empnum, date)
   select e.empnum, d.dates
   from (values(1), (2), (3), (4), (5) 
        ) e(empnum) cross join
        (values ('2020-04-06'), ('2020-04-07'), ('2020-04-08'), ('2020-04-09') 
        ) d(dates);

尝试基于上述内容进行交叉联接,但出现错误,“e”的列数超过了列列表中指定的列数。@Kevin_H。
SELECT
语句有问题,它包含的列比
INSERT-INTO
语句中定义的列多。我调整了代码,它工作得很好,非常感谢。