SQL创建动态列

SQL创建动态列,sql,Sql,我正在寻求一些帮助来构建SQL以获得某些结果。 下面是两张表 表1 Col1 | Col2 | Col3 | Col4 ---------------------------------------- TESTPC01 | 14/08/2014 | ABCD | CXYZ TESTPC02 | 14/08/2014 | EFGH | IJKL 表2 COl1 | Col2 | Col3 | Col4

我正在寻求一些帮助来构建SQL以获得某些结果。 下面是两张表

表1

Col1 | Col2 | Col3 | Col4 ---------------------------------------- TESTPC01 | 14/08/2014 | ABCD | CXYZ TESTPC02 | 14/08/2014 | EFGH | IJKL 表2

COl1 | Col2 | Col3 | Col4 ---------------------------------------- TESTPC01 | 14/08/2014 | ENT | DOC 结果

COl1 | Col2 | Col3 | Col4 | Col5 | Col6 ------------------------------------------------------- TESTPC01 | 14/08/2014 | ENT | DOC | ABCD | YES | TESTPC02 | 14/08/2014 | EFGH | NULL | NULL | NO | 只有当表2中填充了该特定匹配表1.Col1=表2.Col1的特定Col3值的数据时,才会选择“是”。 如果上述条件失败,则无

我可以使用简单的select语句构建SQL,但无法实现动态创建col6。 有谁能告诉我如何实现这一点吗?

您想要一个带条件表达式的左外联接:

select t2.col1, t2.col2, t2.col3,
       (case when t1.col1 is not null then t2.col4 end) as col4
       t1.col3 as col5,
       (case when t1.col1 is null then 'Yes' else 'No' end) as col6
from table2 t2 left join
     table1 t1
     on t2.col1 = t1.col1 and t2.col2 = t1.col1;

我不清楚为什么col4在没有匹配项时为空。通常,您会保留第一个表中的所有值。但是,这就是您指定结果的方式。

您需要查找案例的安全性,我确实尝试过。但是,如何获得匹配值的特定值的这个用例语句呢?我无法理解这件事。