如何只select出不为0的数据

earthpea 2009-08-06 09:57:38
大家好,我正在处理一个工资查询系统的小应用,现在人力资源部有个要求,如果该员工的某一个项目为0的话,就不显示,我想了半天,也没有什么好的处理方式,请大家帮忙。

数据库中表结构如下:
员工id 发放月度 基本工资 绩效工资 加班工资 工资小计 应扣水电费 应扣公积金 应扣小计 实发金额

如,本月没有加班工资,加班工资就是0元,在显示的时候,就不显示出加班工资的项目,sql语句应该如何写呢?

开发环境是sql server+asp

上面只是显示一个月的情况,如果要列出全年发放情况,又应该怎么处理呢?因为比如说一月没有加班工资,但可能五月会有,这样的话,当然要列出加班工资项目了。

谢谢大家,在线等
...全文
259 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
samyou 2009-08-06
  • 打赏
  • 举报
回复
楼上的没错。
shirley_yue 2009-08-06
  • 打赏
  • 举报
回复
同意
fwacky 2009-08-06
  • 打赏
  • 举报
回复

---楼主你的意思是, 当查一个员工id时,如果有一个列为0,那么,这一列就不显示了!

你可以在客户端,做判断了,在asp.net话,若果为0,那么这一列为 visible = true
youzhj 2009-08-06
  • 打赏
  • 举报
回复
顶一下,楼主最好给出实际数据来。问题没有描述清楚。
jinjazz 2009-08-06
  • 打赏
  • 举报
回复
比如你在asp代码里面判断是否是0,不如是,htmltable那一个td就不显示
jinjazz 2009-08-06
  • 打赏
  • 举报
回复
这个东西最好在客户端页面显示的时候控制
soft_wsx 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 maco_wang 的回复:]
SQL codedeclare@tabletable (idint, colint)insertinto@tableselect1,0unionallselect2,0unionallselect3,0unionallselect4,0declare@iintselect@i=sum(col)from@tableif@i=0select idfrom@tableelseselect*from@table

当col列全是0时,不显示col列,楼主是不是这个意思?
[/Quote]
如果有一列不为0是不是应该显示呢?
soft_wsx 2009-08-06
  • 打赏
  • 举报
回复
数据库中表结构如下:
员工id 发放月度 基本工资 绩效工资 加班工资 工资小计 应扣水电费 应扣公积金 应扣小计 实发金额

如,本月没有加班工资,加班工资就是0元,在显示的时候,就不显示出加班工资的项目,sql语句应该如何写呢?
select a.列1,加班工资=case when 加班工资=0 then 0 else 加班工资 end
from 表1 where 条件--其它一样写法加上CASE WHEN ELSE END就可以了
叶子 2009-08-06
  • 打赏
  • 举报
回复

declare @table table (id int, col int)
insert into @table
select 1,0 union all
select 2,0 union all
select 3,0 union all
select 4,0

declare @i int
select @i=sum(col) from @table
if @i=0
select id from @table
else
select * from @table


当col列全是0时,不显示col列,楼主是不是这个意思?
--小F-- 2009-08-06
  • 打赏
  • 举报
回复
最好给点数据来测试下
htl258_Tony 2009-08-06
  • 打赏
  • 举报
回复
意思是说如果加班工资为0,就不显示加工工资这一列?

如果这样,那有的有加班工资,有的没有,你想怎么显示?
you_tube 2009-08-06
  • 打赏
  • 举报
回复
select * from tab 
where isnull(加班工资,0) <> 0
feixianxxx 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 earthpea 的回复:]
楼上的真快,不过我要的是每一个项目呀,不是单纯的某一个项目,那个数据库结构只是一个示例,实际的还包括了福利项目等等,人力资源部的意思就是没有发过的就不显示那个项目了。
[/Quote]

那你就用 isnull 逐个判断

举例
加班工资=isnull(加班工资,'')
华夏小卒 2009-08-06
  • 打赏
  • 举报
回复
某个列为0则不显示,直接select,好像不行
csdyyr 2009-08-06
  • 打赏
  • 举报
回复
最好给出数据和想要的结果。
SQL77 2009-08-06
  • 打赏
  • 举报
回复
CASE WHEN 加班工资=0 THEN '' ELSE 加班工资 END 
??好像这样最后还是会变成0
CASE WHEN 加班工资=NULL THEN '' ELSE 加班工资 END用NULL行不??
没看懂楼主意思
earthpea 2009-08-06
  • 打赏
  • 举报
回复
楼上的真快,不过我要的是每一个项目呀,不是单纯的某一个项目,那个数据库结构只是一个示例,实际的还包括了福利项目等等,人力资源部的意思就是没有发过的就不显示那个项目了。
feixianxxx 2009-08-06
  • 打赏
  • 举报
回复
select * from tb where 项目<>0
我是小小码农 2009-08-06
  • 打赏
  • 举报
回复
select NVL(SUM(加班工资),0),NVL(SUM(补助),0),。。。。
from 表1 where 条件

不好意思,是ORACLE的写法

SQL的的写法:
select SUM(加班工资)=case when 加班工资=0 then 0 else 加班工资 end,
SUM(补助)=case when 加班工资=0 then 0 else 加班工资 end,...
from 表1 where 条件
我是小小码农 2009-08-06
  • 打赏
  • 举报
回复
select NVL(SUM(加班工资),0),NVL(SUM(补助),0),。。。。
from 表1 where 条件

哪一列为'0'则不显示
加载更多回复(3)

34,575

社区成员

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

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