合并两个表中的列[重复]

问题描述 投票:0回答:3

我有两张桌子,例如:

Table A             Table B
+---------------+   +------------------------------+    
| ID   NAME     |   | ID    TYPE       DATE        |    
+---------------+   +------------------------------+    
| 001    A      |   | 001    URGE     2024-01-01   |    
| 002    B      |   | 001    UPDATE   2024-01-02   |
| 003    C      |   | 002    UPDATE   2024-01-03   |
+---------------+   | 001    URGE     2023-12-30   |
                    +------------------------------+

我的预期结果是:

   +-------------------------------------+    
   | ID    NAME   TYPE       DATE        |    
   +-------------------------------------+    
   | 001    A    URGE     2024-01-01     |    
   | 002    B    -        -              |
   | 003    C    -        -              |
   +-------------------------------------+

我想选择表A中的所有结果,并以条件“TYPE = 'URGE'”连接表B并输出最近的DATE,否则DATE列输出NULL。 SQL应该怎么写?

sql db2
3个回答
0
投票

试试这个代码:

  SELECT
        A.ID,
        A.NAME,
        B.TYPE,
        B.DATE
    FROM
    TableA A LEFT JOIN
    (select * from TableB where TYPE='URGE') B 
    ON A.ID = B.ID ;

0
投票

你可以尝试吗:

SELECT
    A.ID,
    A.NAME,
    CASE WHEN B.TYPE = 'URGE' THEN B.TYPE ELSE '-' END AS TYPE,
    CASE WHEN B.TYPE = 'URGE' THEN B.DATE ELSE NULL END AS DATE
FROM
    TableA A
LEFT JOIN
    TableB B ON A.ID = B.ID AND B.TYPE = 'URGE';

-1
投票
SELECT A.ID, A.NAME, COALESCE(B.TYPE, '-') AS TYPE, COALESCE(B.DATE, '-') AS DATE 
FROM TableA A 
LEFT JOIN TableB B 
    ON A.ID = B.ID 
   AND B.TYPE = 'URGE'
© www.soinside.com 2019 - 2024. All rights reserved.