SQL问题,急急急,大神帮帮忙!!!!!!

如图所示,这是一张表里边的数据。图片说明

业务说明:
按照所有的小类名称(a-g)查询员工编号为YG001的员工对应的(a-g)的所有小类金额

5个回答

select 小类金额 from 表名 where name IN (a,b,c,d,e,f,g) and 编号=YG001
自己照着吧字段套上去,应该可以

qq_35235940
听楼一夜雨 这样不能直接查出来吧,只能查出存在的,在做处理,把不存在的补充上去,
大约 3 年之前 回复
Birds_Cerebrum
Birds_Cerebrum 回复听楼一夜雨: 可能我没说清除,要查询的是小类名称和小类金额,但是查出来的结果必须包含所有的小类名称,如果YG001没有某个小类名称的时候,那该小类名称对应的小类金额为0.
大约 3 年之前 回复
qq_35235940
听楼一夜雨 你不是说要员工编号为YG001的员工"对应的"(a-g)的所有小类金额吗,?如果只是a-g的那把and后面去掉就行了
大约 3 年之前 回复
Birds_Cerebrum
Birds_Cerebrum 这个只能出来YG001现有的小类名称,我要的是全部的a-g的,没有金额的话默认金额为0.0
大约 3 年之前 回复

你这个问题最终是求他小类别名称?
如果是查询小类别名称的话,肯定有一个小类别表,这个表里标注着每个小类别对应不同的名称。需要做表关联。
如果说问题写错,是要求小类金额,那么楼上写的,就可以达到你想要的效果。

Alina6
Alina6 你是不是想问,查询这个员工下的 a-g的金额和名称。如果有数据就查出来,没有的话就添加一条 并且金额是0?
大约 3 年之前 回复
Birds_Cerebrum
Birds_Cerebrum 可能我没说清除,要查询的是小类名称和小类金额,但是查出来的结果必须包含所有的小类名称,如果YG001没有某个小类名称的时候,那该小类名称对应的小类金额为0.
大约 3 年之前 回复

可以建一张表(命名表B) 两列
小类名称 金额
a 0
... ...
f 0

select B.小类名称,B.小类金额 from 表B B where B.小类名称 not in (select A.小类名称 from 表A A )
UNION
select 小类名称,小类金额 from 表A ;
这样就可以了,只不过要建一张表

qy513449931
qy513449931 或者写一个函数,根据传入的小类名称 返回金额 ,没有小类名称,返回0 ,最后用union 将a-f 的函数结果连接起来,
大约 3 年之前 回复
Birds_Cerebrum
Birds_Cerebrum 如果不建表的情况下还要能查出来,这样可以吗?
大约 3 年之前 回复

select a.a3,
case when b.a1 is null then 'YG001' else b.a1 end,
case when b.a4 is null then 0 else b.a4 end
from
(
select distinct a3
from zTest
) a left join zTest b on a.a3 = b.a3 and b.a1 like 'YG001'

然后对应这字段改改。

select 小类名称,小类金额 from table where 员工编号 = “YG001”order by 小类名称

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!