1

有一个列存在于 2 个表中。在表 1 中,该列包含二进制形式 ( int)1和的值0,而另一个表包含形式'Y'和的列'N'

本质上,我需要在表 1 中显示包含与表 2 中该列的值不同的值的行。如何计算 1 到 Y 和 0 到 N 进行比较?

例子:

表格1:

DateRecorded SchoolName StudentName isAbsent hasPassed
------------ ---------- ----------- -------- ---------
2011-04-03   ABC        John        Y        Y
2011-04-05   ABC        John        N        Y 

表 2:

DateRecorded SchoolName StudentName isAbsent hasPassed
------------ ---------- ----------- -------- ---------
2011-04-03   ABC        John        0        1
2011-04-05   ABC        John        0        1

应该返回行:

2011-04-03   ABC        John        Y        Y

来自表 1,因为该行与表 2 中的同一行冲突。

4

1 回答 1

4

试试这个:

SELECT * FROM tbl1

EXCEPT

SELECT 
    daterecorded,
    schoolname,
    studentname,
    CASE isAbsent WHEN 1 THEN 'Y' WHEN 0 THEN 'N' END AS isAbsent,
    CASE hasPassed WHEN 1 THEN 'Y' WHEN 0 THEN 'N' END AS hasPassed
FROM tbl2

SQL-Fiddle 演示

于 2012-07-06T04:04:36.947 回答