简体   繁体   English

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

[英]MS SQL SERVER - Looping header and detail

I am new with MSSQL SERVER. 我是MSSQL SERVER的新手。 I am having a challenge with looping. 我在循环方面遇到了挑战。

Here's my scenario: 这是我的情况:

I have a transaction table that is filled with data from SMS messaging. 我有一个事务表,其中充满了来自SMS消息传递的数据。 (tbl_sentTransaction) (tbl_sentTransaction)

Here is how it looks like: 看起来是这样的:

TransCtr|TransNum|TransInfo
---------------------------
      1 |11111111|some info 1
---------------------------
      2 |11111111|some info 2
---------------------------
      3 |11111111|some info 3
---------------------------
      4 |11111111|some info 4
---------------------------

Now, from tbl_sentTransaction, I have to insert it to its own table. 现在,从tbl_sentTransaction,我必须将其插入到自己的表中。

So I have a header table and detail table. 所以我有一个标题表和详细信息表。

Here's what I want to do. 这就是我想要做的。

If the record from the tbl_sentTransaction has the same TransNum, I will treat it as one record. 如果tbl_sentTransaction中的记录具有相同的TransNum,则将其视为一条记录。 So I will insert the TransNum to the header table once. 因此,我将TransNum插入头表一次。

Then I will insert the TransInfo to the detail table multiple times. 然后,我将TransInfo多次插入到明细表中。 So based on the given example: 因此,基于给定的示例:

tbl_trans_header

------------------
TransCtr|TransNum
------------------
      1 |11111111
------------------



tbl_trans_detail

------------------------------
TransCtr|TransNum|TransInfo
-------------------------------
      1 |11111111| some info 1
-------------------------------
      1 |11111111| some info 2
-------------------------------
      1 |11111111| some info 3
-------------------------------

Would you help me achieve this? 你能帮我实现这个目标吗? I can't make it work. 我不能使它工作。 Hope I explained myself well. 希望我能很好地解释自己。 Thankyou so much. 非常感谢。 Any suggestion would be appreciated. 任何建议,将不胜感激。

If you delete transaction table after you process it, you can use following code 如果您在处理交易表后将其删除,则可以使用以下代码

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

You can use this. 您可以使用它。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM