比较SQL中不同类型的不同表中的两列

时间:2012-07-06 03:59:53

标签: sql sql-server sql-server-2008-r2

2个表中存在一列。在表1中,此列包含二进制形式(int),10的值,而另一个表包含'Y'和{{1}形式的列}。

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

示例:

表1:

'N'

表2:

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

应该返回行:

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

,因为此行与表2中的同一行发生冲突。

1 个答案:

答案 0 :(得分: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 Demo