SQL获取事务表并建立MULTI-COLUMN表

时间:2019-02-21 14:06:01

标签: sql-server

问题: 将具有指定的预定义日期集的单个交易(行)从一个表移动到另一个表,该表在一行中包含所有日期/交易值。

表1 摘要表。列

  1. KeyField(此表唯一)
  2. Date190131
  3. Date180131
  4. Date170131
  5. Date160131
  6. Date150131

表2 -交易表。 列:

  1. PK
  2. KeyField(此表不是唯一的-映射到Table1.Key字段)
  3. 日期-用于交易(5个预定义值20190131,20180131,20170131,20160131,20150131中的一个)
  4. MyValue-交易价值

我想遍历表2中的每一行(事务)并将其插入/更新到表1中(表2中每个唯一KeyField的摘要行)。

SQL现在正在避开我,但这是我现在要走的方向-MERGE语句,其中我检查Date字段中的日期,并根据Date字段中的值填充表1中的正确列(映射到表1中的列名的5个预定义值之一)。这不必一定是MERGE,但是我的一些初步研究建议将MERGE用于StackOverflow中类似的INSERT / UPDATE情况(是的,我阅读了概述MERGE问题的博客)。

到目前为止,代码(已损坏):

MERGE Into Table1 as TH
USING (SELECT * FROM Table2) as TR
    on TH.PK=TR.KeyField
when matched then
    update set
    TH.PK = TR.KeyField,
    IF (TR.Date = 20190131)
        TH.Date190131 = TR.MyValue
    Else
        Begin
            If TR.Date = 20180131
                TH.Date180131 = TR.MyValue
            Else
                Begin
                    If TR.Date = 20170131
                        TH.Date20170131 = Tr.MyValue
                    Else
                        Begin
                            If TR.Date = 20160131
                                TH.Date20160131 = Tr.MyValue
                            Else
                                TH.Date20150131 = Tr.MyValue
                        End;
                End;
        End;
when not matched then
    insert values(domain    

0 个答案:

没有答案