table1表与table2表通过barcode关联
table1表字段 class, name sex address,age ,barcode
table2表字段 name sex address,age ,barcode
其中table2是从别处导进来的数据,table1是操作员手工录入的数据
表中存有若干班级的学生信息,现在想求某个班级的学生各字段的长度,
select sum( len(name)+ len(sex)+ len(address)+ len(age) ) from table1 where class=@class
但是有个需求是根据条码barcode在table2中查找相应行,若是table1的某个字段的值与table2中的该字段的值相同则不计这个字段的长度,比如两个表中barcode都为0001的两条记录的name如果都是“张三”,就不计"张三"的长度,只计性别等其他字段的长度
我想不好该怎么写这个SQL语句,请大家帮忙。我不想用游标去循环逐一读取出来对比.
------解决思路----------------------
你参考一下
select sum((CASE WHEN A.NAME<>B.name THEN len(A.name)ELSE 0 END)+ len(A.sex)+ len(A.address)+ len(A.age) )
from table1 A
LEFT JOIN table2 B ON A.barcode=B.barcode
where A.class=@class
------解决思路----------------------
#2更正:ON t2.barcode = t1.barcode