MS SQL SERVER - 循环标头和详细信息

时间:2017-12-27 13:05:36

标签: sql-server database

我是MSSQL SERVER的新手。我正在接受循环挑战。

这是我的情景:

我有一个充满SMS消息传递数据的事务表。 (tbl_sentTransaction)

以下是它的样子:

onWrite

现在,从tbl_sentTransaction,我必须将它插入到自己的表中。

所以我有一个标题表和详细信息表。

这就是我想要做的事。

如果来自tbl_sentTransaction的记录具有相同的TransNum,我会将其视为一条记录。所以我将把TransNum插入标题表一次。

然后我会多次将TransInfo插入到详细信息表中。所以基于给定的例子:

TransCtr|TransNum|TransInfo
---------------------------
      1 |11111111|some info 1
---------------------------
      2 |11111111|some info 2
---------------------------
      3 |11111111|some info 3
---------------------------
      4 |11111111|some info 4
---------------------------
你会帮助我实现这个目标吗?我不能让它发挥作用。希望我能很好地解释自己。非常感谢。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果在处理事务表后删除事务表,则可以使用以下代码

insert into tbl_trans_detail (
    TransCtr, TransNum, TransInfo
)
select
    TransCtr, TransNum, TransInfo
from tbl_sentTransaction

insert into tbl_trans_header (
    TransCtr, TransNum
)
select distinct
    1, TransNum
from tbl_sentTransaction

答案 1 :(得分:0)

你可以使用它。

INSERT INTO tbl_trans_header (TransCtr, TransNum)
SELECT MIN(TransCtr), TransNum
FROM tbl_sentTransaction
GROUP BY TransNum


INSERT tbl_trans_detail (TransCtr, TransNum, TransInfo)
SELECT MIN(TransCtr) OVER(PARTITION BY TransNum), TransNum, TransInfo
FROM tbl_sentTransaction