2013-05-02 76 views
-4

的SQL Server 2012: 我有表A(CUST_ID INT,P_ID UNIQUE INT,P_Name,Match_ID,ISSUE_DATE)映射SQL表

Cust_ID P_ID P_Name Match_ID Issue_Date 
1   214 J5  1  2009-01-01 
1   478 U3  1  2013-05-02 
1   258 21  2  2003-04-05 
1   369 65  2  2013-05-02 
2   235 69  1  2011-05-09 
2   897 36  1  2013-05-02 

現在基本上,行2,4和6從第1行填充,3和5,因此他們有相同的Match_Id和2,4,6有今天的日期。我想創建一個映射表如下:

我有一個表A(客戶ID,P_ID,P_Name,New_P_ID,New_P_Name)

Cust_ID P_ID P_Name New_P_ID New_P_Name 
1   214  J5  478  U3 
1   258  21  369  65 
2   235  69  897  36 

請給我寫一個查詢,我已經嘗試了很多事情,但聲音像簡單的解決方案。 謝謝你一堆。

+3

不需要,你需要嘗試一些東西,來到這裏與你卡住。 – 2013-05-02 21:42:06

+0

請至少展示你嘗試過的許多事情。 – peterm 2013-05-02 21:46:52

+0

INSERT INTO #B(CUST_ID,P_ID,P_Name) SELECT CUST_ID,P_ID,P_Name從#A WHERE ISSUE_DATE 2013-05-02 22:19:25

回答

0
INSERT INTO #B (Cust_ID , P_ID , P_Name, Match_ID) 
    SELECT cust_ID , P_ID, P_Name, Match_ID from #A WHERE Issue_Date < GETDATE() 
    UPDATE #B 
    SET New_P_ID = NEW 
    FROM (Select New_P_ID, new = #A.P_Id from #B INNER JOIN #A ON #A.Cust_ID = #B.Cust_ID AND #A.Match_ID = #B.Match_ID AND #A.P_ID <> #B.P_ID ) #B 

    UPDATE #B 
    SET New_P_Name = NEW 
    FROM (Select New_P_Name, new = #A.P_Name from #B INNER JOIN #A ON #A.Cust_ID = #B.Cust_ID AND #A.Match_ID = #B.Match_ID AND #A.P_ID <> #B.P_ID ) #B