【小5聊】Sql Server基础之统计库龄语句,仅作为语句使用
知识点的综合使用
分组、数据转换、Case when then、max、min、count、sum、left join多表关联等知识点
知识点
编号 | 知识点 | 说明 |
1 | group by | 对某个表字段进行分组 |
2 | convert |
数据类型转换 |
3 | case when then else end | 逻辑判断 |
4 | max | 最大值 |
5 | min | 最小值 |
6 | count | 记录数 |
7 | sum | 统计值,综合 |
8 | left join | 左链接 |
1、知识点
1)group by
此处以商品编号进行分组
select shopid from stock group by shopid
2)
2)convert
数据类型转换,varchar(10)和120,datetime时间数据类型转为字符串,并只显示10位长度值,刚好就是yyyy-MM-dd
select convert(varchar(10),timevalue,120) as timevalue from stock
2、创建表
USE [test]
GO/****** Object: Table [dbo].[stock] Script Date: 04/17/2022 10:52:02 ******/
SET ANSI_NULLS ON
GOSET QUOTED_IDENTIFIER ON
GOSET ANSI_PADDING ON
GOCREATE TABLE [dbo].[stock]([typeValue] [varchar](50) NULL,[shopid] [int] NULL,[timevalue] [datetime] NULL,[stockValue] [int] NULL
) ON [PRIMARY]GOSET ANSI_PADDING OFF
GO
3、表添加记录
模拟一定量的记录进行测试
--truncate table stock
/*
insert into stock(typeValue,shopid,timevalue,stockValue)
values('入库',123,'2020-01-01',100)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('入库',234,'2020-01-02',100)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',123,'2020-01-03',50)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',234,'2020-01-04',50)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',123,'2020-01-05',50)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',234,'2020-01-06',50)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('入库',123,'2020-01-07',100)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('入库',234,'2020-01-08',100)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',123,'2020-01-09',30)
insert into stock(typeValue,shopid,timevalue,stockValue)
values('出库',234,'2020-01-10',30)
*/
4、查询代码
/*
编号123,还存在库存,则使用上次进货时间2020-01-11和2020-02-20相差,就是40天
编号234,还存在库存,则使用上次进货时间2020-01-11和2020-02-20相差,就是41天'
*/declare @searchTime varchar(50)
set @searchTime='2020-02-20'select a.shopid as 商品编号,
convert(varchar(10),a.inMaxTime,120) as 上次进货时间,
@searchTime as 搜索时间,
(case when (a.totalInValue-b.totalOutValue)>0
then datediff(day, a.inMaxTime, @searchTime) --还有库存,则用上次进货时间计算
else datediff(day, b.outMaxTime, @searchTime) end) as 库龄, --没有库存了,使用最后一次出库时间计算
(a.totalInValue-b.totalOutValue) as '库存',
(case when (a.totalInValue-b.totalOutValue)>0 then '还有库存' else '已出完' end) as 是否出库完
from(--先按商品编号分组,并筛选入库值和统计入库总值--出库最小得时间select shopid,min(timevalue) as inMinTime, --入库最小时间max(timevalue) as inMaxTime, --入库最大时间(上次进货时间)sum(stockValue) as totalInValue,count(1) as inCountfrom stock where typeValue='入库' and timevalue<=@searchTimegroup by shopid
) as a
left join(select shopid,min(timevalue) as outMinTime, --出库最小时间max(timevalue) as outMaxTime, --出库最大时间sum(stockValue) as totalOutValue --出库总数from stock where typeValue='出库' and timevalue<=@searchTimegroup by shopid
) as b
on a.shopid=b.shopid
【小5聊】Sql Server基础之统计库龄语句,仅作为语句使用相关推荐
- 整理一些sql server基础资料
闲来无事,整理些sql server 基础资料,以便以后查找.复习 SQL Server日期计算 a. 一个月的第一天 Select DATEADD(mm, DATEDIFF(mm,0,getdate ...
- SQL Server基础知识概念要点详细讲解
SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...
- 《SQL Server基础——SQL语句》
SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE SCC 2. ...
- sql server基础语法 创建数据库 创建表
sql server基础语法 创建数据库 创建表 1.创建数据库 2.表的创建 3.在现有表中添加标识列 4.创建外键 5.添加外键 6.约束 7.创建局部临时表 8.创建全局临时表 9.创建具有ch ...
- SQL Server基础之索引
索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...
- SQL SERVER 基础知识及语法总结,从头说起,一点一滴 (一)
什么是SQL? SQL指结构化查询语言 SQL使我们有能力访问数据库 SQL是一种ANSI的标准计算机语言 在SQL的使用上,或多或少也有许多知识点,在这里总结一下关于SQL的基本语法以及一些基础知识 ...
- SQL Server基础——T-SQL语句
一. SQL-Server基础前言 1. 几大数据库巨头 Microsoft SQL Server 2000/2005/2008/2008R2/2012/2014 Oracle Database 11 ...
- SQL Server 基础语句知识,语法结构。
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- sql server基础语句大全
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server - 创建 ...
最新文章
- Could not reliably determine the server's fully qualified domain name
- Python 爬虫实例(4)—— 爬取网易新闻
- linux修改用户名和密码
- 说说 Spring AOP 原理
- JSP页面传值出现中文乱码的问题
- redis和php有什么,redis主要用来做什么
- 华为综合测评是什么_喝水不用等待,温度随心控随时喝到热水,测评华为智选恒温电水壶...
- AX2012 学习自动生成编码
- 24小时“凶宅试睡直播”去“凶”,阿里拍卖为卖凶宅有点拼
- 掘金8000亿早教市场,启蒙APP们还面临哪些难题?
- 2016最新iOS开发证书配置和安装的详细步骤攻略
- w ndows无法完成格式化,windows 无法完成格式化2种解决方案
- pg数据库开启远程连接_PostgreSQL 允许远程访问设置的操作
- ios崩溃日志收集_漫谈iOS Crash收集框架
- 谷歌商店上架APP被拒绝
- DSR 和AODV的对比
- python随笔01(robotframework自动化)
- 解决电脑插耳机听视频暂停后继续耳机声音突然变大的问题(详细图解)
- 2018-2019-2 《网络对抗技术》Exp7 网络欺诈防范 Week10 20165233
- 用python代码做个圣诞树,送给心爱的她