子查询在插入期间返回了多个值

时间:2014-03-06 21:25:59

标签: subquery

我需要帮助将数据从一个表插入另一个表。

表定义是:

create table reg
(id int,
 datum datetime,
 status nvarchar(1)
 )

 create table gate
 (sifra int,
  mbr int,
  datumin datetime,
  datumout datetime
  )

表格数据是:

id  datum                    status
46627   2014-05-22 12:55:02.000   I
46628   2014-05-22 18:55:02.000   O
49875   2014-08-11 18:55:02.000   O 
49877   2014-09-11 18:55:02.000   I
49889   2014-09-03 18:50:02.000   O

我尝试过这样的事情,但失败了。

insert into gate values(
(select id from reg), (select id from reg),(select datum from reg where status = 'I'),
(select datum from reg where status = 'O'))

任何想法如何管理?

1 个答案:

答案 0 :(得分:0)

您的选择不能返回多个记录,否则您会收到此错误。我不知道你想要做什么,但如果我猜,我想你想要这样的事情:

INSERT INTO Gate(sifra,mbr,datumin,datumout)
SELECT ID,ID,CASE WHEN status = 'I' THEN datum ELSE NULL END, CASE WHEN status = 'O' THEN datum ELSE NULL END)