sql server 如何改变计算结果的值 如null改变为0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 如何改变计算结果的值 如null改变为0相关的知识,希望对你有一定的参考价值。
如何把表中的null都改为0
我知道isnull(xx, 0);
但是我不知道在我这些查询语句中怎么用
比如客服凡生,他只有地下城与勇士的数据,其他数据没有,那么行转列以后,其他没有的值自然就是空值,这个和前面的统计没有什么关系的。
个人觉得有两个办法:
(1)再套一层,但是我记得这种行转列的数据,好像不认列名(转列后的列名),你可以试试,如果认列名,那么就再套一层,写几个isnull就行,如果不认,那么就做成视图,然后查询视图的时候再isnull一下,这个应该可以吧。
(2)还有一个办法就是弄一张写有所有行转列列名的表,然后让所有的“客服”和这张表cross join,然后再进行计算,不过这样的话,总感觉有些小题大做,为了个0,搞这么多东西,似乎有些不值。追问
你说的第一个办法怎么写啊 我是初学者不知道再套一层怎么写
追答就是在这个语句外层在写一层select(现在这张表查询出来的内容,就可以作为字段了),不过我也说了,可能不能用,因为我记得行转列不认列名。可以试试视图,如果这个语句本身可以建立视图,那么应该就可以了。
追问是这样写吗 报错了
(1)请看全我的回答,会报错这事我写了两遍了,再说你的写法也不对。
(2)个人感觉,如果列名能用,记住说的是如果能用(毕竟我似乎记得是不能用,可能你会说不能用你告诉我干什么?我只能说这是一种可能,如果不能实现,只能说没有可能。)我用T表示你原来的语句(就是你查询出一堆null的那个),如果不行的话,可以试试建立视图(用你原来的那个语句建立视图),然后再在视图上应用这个查询试试。还不行就放弃吧,至少一条语句是搞不定的,如果为了一个0用第二种方式,那时完全得不偿失的。
select 客服,isnull(剑灵,0) as 剑灵 ,isnull(龙与地下城,0) as 龙与地下城, isnull(冒险岛2,0) as 冒险岛2,isnull(征途2s,0) as 征途2s,isnull(天涯明月刀,0) as 天涯明月刀,isnull(斗战神,0) as 斗战神,isnull(英雄联盟,0) as 英雄联盟 from T
这样写对吗
sql server 中 ISNULL 有两个参数,第一个是字段名或变量,第二个是默认值
读取数据时可以这样写
select [客服],ISNULL([英雄联盟],0) as [英雄联盟] from [OrderLog]你那句里面count应该改成
不可以哦 报错
不是小括号哦,是方括号,字段名,表名这些可以用方括号括起来
追问不理解你的意思 你写好让我看行么
追答我上面写的就是方括号,你自己改的小括号
报错
你到底能不能看懂呢,我第一句写的是通常的用法,第二句是针对你那句的改法。
你这表里都没这个字段,肯定报错啦
哦哦 我看错了 是这样吗
你看下图,把红框里的代码,写成绿框里的试试。
不可以哦 还是null
你试试把sum(单数),改成sum(isnull(单数,0)),再看看。
追问我能加一下你vxin什么的嘛?
本回答被提问者采纳 参考技术C update TABLE set 字段名=0 where isnull(字段名)把字段名改为你的实际字段名,TABLE改为你实际表名。追问没明白 能完整的帮我写到这个语句中吗 我不知道该写到哪
UPDATE 表名 SET 剑灵= 0 WHERE isnull(剑灵)
追问不行...
用case when吧,
select case when sss is null then o else sss end as example where xxxx;就是这么个写法。
select isnull(xxx,0) as xxx where xxxxx也是可以的。
SQL Server查询以获得结果
我具有如下表结构
id pid amount drcr residce
1 33 1000 1 55
2 32 2000 2 44
3 33 1500 2 54
这里我想用drcr
计算总和,返回值更大的值对于前。 1500 > 100
,因此它应该为total = 500
返回drcr = 2
和pid = 33
我尝试使用Google搜索的内容,但一无所知。
我认为您正在寻找条件聚合的形式
SELECT pid, SUM(CASE WHEN drcr = 2 THEN Amount ELSE -Amount END)
FROM
(
VALUES
(1, 33, 1000, 1, 55),
(2, 32, 2000, 2, 44),
(3, 33, 1500, 2, 54)
) T(id, pid, amount, drcr, residce)
GROUP BY pid
这里是db<>fiddle
以上是关于sql server 如何改变计算结果的值 如null改变为0的主要内容,如果未能解决你的问题,请参考以下文章