知识点的综合使用

分组、数据转换、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基础之统计库龄语句,仅作为语句使用相关推荐

  1. 整理一些sql server基础资料

    闲来无事,整理些sql server 基础资料,以便以后查找.复习 SQL Server日期计算 a. 一个月的第一天 Select DATEADD(mm, DATEDIFF(mm,0,getdate ...

  2. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  3. 《SQL Server基础——SQL语句》

    SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE SCC 2. ...

  4. sql server基础语法 创建数据库 创建表

    sql server基础语法 创建数据库 创建表 1.创建数据库 2.表的创建 3.在现有表中添加标识列 4.创建外键 5.添加外键 6.约束 7.创建局部临时表 8.创建全局临时表 9.创建具有ch ...

  5. SQL Server基础之索引

     索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...

  6. SQL SERVER 基础知识及语法总结,从头说起,一点一滴 (一)

    什么是SQL? SQL指结构化查询语言 SQL使我们有能力访问数据库 SQL是一种ANSI的标准计算机语言 在SQL的使用上,或多或少也有许多知识点,在这里总结一下关于SQL的基本语法以及一些基础知识 ...

  7. SQL Server基础——T-SQL语句

    一. SQL-Server基础前言 1. 几大数据库巨头 Microsoft SQL Server 2000/2005/2008/2008R2/2012/2014 Oracle Database 11 ...

  8. SQL Server 基础语句知识,语法结构。

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. sql server基础语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server - 创建 ...

最新文章

  1. Could not reliably determine the server's fully qualified domain name
  2. Python 爬虫实例(4)—— 爬取网易新闻
  3. linux修改用户名和密码
  4. 说说 Spring AOP 原理
  5. JSP页面传值出现中文乱码的问题
  6. redis和php有什么,redis主要用来做什么
  7. 华为综合测评是什么_喝水不用等待,温度随心控随时喝到热水,测评华为智选恒温电水壶...
  8. AX2012 学习自动生成编码
  9. 24小时“凶宅试睡直播”去“凶”,阿里拍卖为卖凶宅有点拼
  10. 掘金8000亿早教市场,启蒙APP们还面临哪些难题?
  11. 2016最新iOS开发证书配置和安装的详细步骤攻略
  12. w ndows无法完成格式化,windows 无法完成格式化2种解决方案
  13. pg数据库开启远程连接_PostgreSQL 允许远程访问设置的操作
  14. ios崩溃日志收集_漫谈iOS Crash收集框架
  15. 谷歌商店上架APP被拒绝
  16. DSR 和AODV的对比
  17. python随笔01(robotframework自动化)
  18. 解决电脑插耳机听视频暂停后继续耳机声音突然变大的问题(详细图解)
  19. 2018-2019-2 《网络对抗技术》Exp7 网络欺诈防范 Week10 20165233
  20. 用python代码做个圣诞树,送给心爱的她

热门文章

  1. 如何通过maven库查找pom中dependency
  2. Git 基础知识 - 记录对存储库的更改
  3. 7-14 打印选课学生名单(25 分)
  4. 代码二十万,程序如有神
  5. linux应用程序开发入门,作为一名程序员我不忘初心
  6. python Django web 框架 (二十)之ORM
  7. ubuntu16.04 安装配置环境
  8. 什么是开源,什么是开源精神?
  9. 微信小程序随机数(自定义长度和类型)
  10. 性能测试:wiremock 基础使用 + wiremock/wiremock + docker + 镜像发布吃内存的问题