问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql查询没有数据的时候怎么用0填充

发布网友 发布时间:2022-04-22 13:51

我来回答

6个回答

懂视网 时间:2022-04-08 22:18

BEGIN TRAN

CREATE TABLE [dbo].[CarData](
[CarID] [int] NULL,
[Mileage] [int] NULL,
[M_year] [int] NULL,
[M_Month] [int] NULL,
[M_Day] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 10, 2015, 1, 1)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 15, 2015, 1, 2)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 15, 2015, 1, 5)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 20, 2015, 1, 6)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 26, 2015, 1, 9)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 30, 2015, 1, 10)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (1, 35, 2015, 1, 11)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (2, 20, 2015, 1, 5)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (2, 22, 2015, 1, 8)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (2, 40, 2015, 1, 10)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (2, 45, 2015, 1, 11)
INSERT [dbo].[CarData] ([CarID], [Mileage], [M_year], [M_Month], [M_Day]) VALUES (3, 50, 2015, 1, 11)

ROLLBACK

--使用Sql语句,统计出每辆汽车每天行驶的里程数(不是总里程)
--关键点:如何上一条记录,有rowNum之类的函数没?有! row_number()
--按照carID排序后,进行rowNum
SELECT ROW_NUMBER() OVER (order by c.carID ) as rowNum,c.* FROM CarData c

--按照carID分组后
SELECT c.CarID, ROW_NUMBER() OVER (PARTITION by c.CarID ORDER BY c.M_year,c.M_Month,c.M_Day) as RowNum ,c.Mileage FROM CarData c

--博友答案
WITH TWO AS(
SELECT ROW_NUMBER() OVER(PARTITION BY CarId ORDER BY CarId, M_Year, M_Month, M_Day) AS NodeId
,C.CarId
,C.Mileage
,C.M_Year
,C.M_Month
,C.M_Day
FROM cardata AS C
)
SELECT A.*
, A.Mileage - COALESCE(B.NextMileage, 0) AS ‘增量‘
FROM TWO AS A
OUTER APPLY (SELECT Mileage AS NextMileage FROM TWO AS B WHERE B.NodeId = A.NodeId - 1 AND B.CarId = A.CarId ) AS B;

 

---补充知识 函数COALESCE
--说明 至少应有一个参数为 NULL 类型。,返回第一个非NUll类型的值
select COALESCE(null,null);
SELECT COALESCE(NULL,NULL,GETDATE());
SELECT COALESCE(NULL,0);

SQLServer的学习场景(关于row_number()和COALESCE()的使用)

标签:

热心网友 时间:2022-04-08 19:26

这样:

SELECT

a.dt AS '时间',

ISNULL(b.yield, '0') AS '数据'

FROM

(

SELECT

dateadd(d, number, '2018-11-01') dt

FROM

master..spt_values

WHERE

type = 'p'

AND dateadd(d, number, '2018-11-01') <= '2018-11-30'

) a

LEFT JOIN CE_BD_E_ELECTRIC_WORKSHIFT_T b ON a.dt = b.opdate

扩展资料:

注意事项

COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

场景一:你想要获取最大值,然后+1返回(即返回的值已经默认为空了),程序接收了本来不该为空的值去运算,就会出错。

SELECT MAX(my_money)+1 FROM tb_test;

改进方法:使用 coalesce函数   COALESCE(值1, 值2,......, 值n) ,只要遇到非null值就返回。

这样子就可以设置一个值,让你第一个不成功后,返回指定的值,如下面,返回的是1.

SELECT COALESCE(MAX(my_money)+1, 1) FROM tb_test;

热心网友 时间:2022-04-08 20:44

如果是SQLServer数据库可以使用ISNULL()函数

    例如:

--这是临时变量表
declare @table table(a varchar(20),b varchar(20))
insert into @table(a) values('a')
--实际查询语句
select a,b from @table
--测试查询语句,当无数据时用0代替
select a=isnull(a,0),b=isnull(b,0) from @table

    效果图如下:

 

参考资料

    了解更多关于ISNULL函数用法,可访问下面连接

    http://www.w3school.com.cn/sql/sql_isnull.asp

追问这种方法不行哦,因为我查的数据数据库里是没有的所以他不是null而是没有那条记录

追答

如果是空数据,返回0。你只能通过相应的程序判断,或者sql判断无法用一个查询,如果是空返回0的。

例如类似:

if exists(select 1 from 表名 where 条件语句)
begin--如果存在
    select * from 表名 where 条件语句
end
else
begin--如果不存在
    select 0
end

热心网友 时间:2022-04-08 22:19

可以使用ISNULL()函数


列如

效果图如下

追问很明确的说isnull不行,他针对的是查询出来的数据为null的时候可以,但是我查的是数据库里都没有那条记录,返回回来的数据就不是null了是空没有数据

热心网友 时间:2022-04-09 00:10

我今天也遇到这类问题了,
解决问题的关键不是从原SQL上改进,而是嵌套一层!

热心网友 时间:2022-04-09 02:18

update table set sex=0 where sex is null
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
妇科的止血药有哪些 妇科用的止血药有哪些 妇科止血药的功效 人艰不拆是啥意思 汉酱51 度酱香型白酒多少钱?味道怎么样? 穿凉鞋可以穿袜子吗?凉鞋发黄怎么变白? 爱奇艺vip投屏限制怎么办 爱奇艺vip投屏视频限制怎么解决 支付宝怎样解除关联的支付宝账号? 剑圣叫什么名字 ...政策?这个政策的目的是什么?会对经济有什么影响? 小米8稳定版无法升级miui11? excel表格有数据时按公式计算,表格里没有数据时显示0。这个怎样用if函数? 如何在使用EXCEL函数VLOOKUP时,查找无对应数据就显示0而不显示? 多条件查找 vlookup 没有条件的话返回0 Excel问题,vlookup函数查不到数据,怎么返回0值? 使用lookup函数查找时,缺失值如何不返回0? 404 Not Found 请教EXCEL中怎样让函数 vlookup 在找不到数据的单元格返回数值0? 在word里上粗下细双下划线怎么弄 Oracle 当前条件没有返回数据,如何让它某个字段返回一个0? 如何双下划线 excel 公式怎么让引用的数据为空时不显示为0 为什么excel表格呈现暗灰色? 如何在Excel中设置不显示没有数据的单元格? 怎样在Excel中设置不同形状和颜色的下划线 在excel中复制内容时出现“剪贴板有问题”? Word中常用的五种视图显示模式 约定借款利息多少合法 借贷利息多少合法 mysql count(*)没数据 返回 0 sql 语句查询count时,如果没有就返回0 可以下载普通mp4格式电影的网站和软件有哪些? mysql sum() div 没有数据怎么返回0 下载mp4电影用什么软件最好? 什么软件下载的电影是mp4? 如何下载MP4播放软件 谁有下载MP4软件 下载 怎么下载MP4? 怎么下载MP4 iQOO 9 Pro是否支持WiFi6? 鍒桦媷,这三个字的拼音 用360浏览器截图保存在哪里呢 360浏览器的截屏文件存哪了 教您使用360安全浏览器截图 360浏览器图片保存在哪里 360浏览器截图默认的保存在哪里了 大病保险的范围?? 小米八青春版怎样把miui10升级到miui11? 急!请问荷包蛋怎么煎