具有所需结果的单行连接表

Joined tables single row with desired results

首先,我知道这是一个糟糕的设计案例,但我只是想知道我怎样才能从具有所需信息的接头中获得单个 sql 结果。

所以这是一个简单的例子,2 tables 与 ids 相关联:

 TableA                   TableB

 id   code                id   tableA_id (FK)   start   end 
---- -------             ---- ---------------- ------- ------        
 1    codeA               1    2                NY      null
 2    codeB               2    2                null    LA

因此 TableA 中的第 2 行在 TableB 中有 2 行对应。

想要的结果:

 tableA_code   tableB_start   tableB_end
------------- -------------- ------------
 codeB         NY             LA

因此在结果中需要将 table B 中的 2 行分组为一行并消除空值。

查询:

select A.code, B1.start, B2.end
from TableB B1, TableB B2, TableA A
where B1.tableA_id = B2.tableA_id
and B1.tableA_id = A.id
and B1.start is not null and B2.end is not null
Let me know if this works for you

SELECT A.code,
  MAX(B.STRT) STRT,
  MAX(B.END)
END
FROM
  (SELECT 1 AS A_ID,'CODE A' AS CODE FROM DUAL
  UNION ALL
  SELECT 2 AS A_ID,'CODE B' AS CODE FROM DUAL
  )A,
  (SELECT 1 AS B_ID,2 AS A_ID,'NY' STRT, NULL AS END FROM DUAL
UNION ALL
SELECT 2 AS B_ID,2 AS A_ID, NULL STRT, 'LA' AS END FROM DUAL
  )B
WHERE A.A_ID = B.A_ID
GROUP BY A.code;