大家帮看看这个统计语句该怎么写

限量的蓝天 2014-10-28 11:29:29
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语句,请大家帮忙。我不想用游标去循环逐一读取出来对比.


...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-10-28
  • 打赏
  • 举报
回复
#2更正:ON t2.barcode = t1.barcode
Tiger_Zhao 2014-10-28
  • 打赏
  • 举报
回复
    SELECT SUM( Len(ISNULL(NULLIF(t1.name,t2.name),''))
+ Len(ISNULL(NULLIF(t1.sex,t2.sex),''))
+ Len(ISNULL(NULLIF(t1.address,t2.address),''))
+ Len(ISNULL(NULLIF(t1.age,t2.age),''))
)
FROM table1 t1
LEFT JOIN table2 t2
ON t2.barcode = b1.barcode
WHERE t1.class = @class
还在加载中灬 2014-10-28
  • 打赏
  • 举报
回复
你参考一下
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
xb8315381 2014-10-28
  • 打赏
  • 举报
回复

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧