我有一张表格,其中包含以下数据:
Record Type MID CvvId Date Amount
------------- ---------- ------------- ------------- ---------
2E 8715613516 2014-25-03 27.12
3E asd5156154485 M
2E 8751651650 2014-25-03 27.13
3E asd5165434485 S
不,我必须读取此表的值并将其插入另一个表,列为:
MID, CvvId, Date, Amount.
现在,对于记录类型“2E”的每个记录,此后的行将始终为记录类型“3E”
对于列MID,CvvId,Date,Amount,我必须使用记录类型“2E”。对于CvvId,我必须使用记录类型“3E”。在每2E记录之后,我会获得3E记录。我必须在SQL Server中编写一个存储过程,以将此数据插入另一个表中。如何实现这一目标?
答案 0 :(得分:2)
我通过添加一个对于2E和3E记录都是唯一的transactionId列来更改您的表,如下所示
create table tableE(
TId int,
rtype varchar(20),
MID varchar(20),
CvvId varchar(20),
date date,
amount decimal(18,2))
然后关注SELECT语句将帮助您将它们组合成一行
select *
from tableE t1
inner join tableE t2 on t1.tid = t2.tid
where t1.rtype = '2E' and t2.rtype = '3E'
答案 1 :(得分:0)
以下是使用bulk insert
执行此操作的过程。如另一个答案所示,您希望将基础表的定义更改为具有标识列:
create table atable (
atableId int not null identity(1, 1) primary key,
rtype varchar(20),
MID varchar(20),
CvvId varchar(20),
date date,
amount decimal(18,2)
);
然后,在此表上定义一个排除标识的视图:
create view v_atable as
select rtype, mid, cvvid, date, amount
from atable;
现在,使用bulk insert
进入视图。这将为每一行生成一个自动递增的标识值。然后你有一个订单,可以识别下一行。
答案 2 :(得分:0)
我得到了它的工作。如上所述,添加了一个新的自动增量(不一定是P.k)字段作为Tid。并编写了以下查询: -
SELECT p.MID,LEAD(p.CvvId)OVER(OR.Pr.Tid)NextCvv, LEAD(p.RecordType)OVER(OR.by p.Tid)NextRecordType 从表p
过滤完记录集后,在某些商业条件下,它有效。谢谢大家的帮助!