数据库环境:SQL Server 2005
有一个产品销售实时表,表数据如下所示:
字段名称产品名称、字段
类型是销售型的,1是销售,2是一种回归,场数是多少,CTime是手术时间。
要求uff1a
所有售出货物(售出、退回)在24小时内的数据均以一行计算,并考虑到
日期。
分析uff1a
这实际上是一个
传输应用程序,在线路传输之前,需要完成所有的数据24小时。通过数字辅助
系统完成数据。
当spt_values实施,一排排可以根据类型和
处理CTime分组。
1。构建表并导入数据
创建表的蛇(name varchar(10),int类型,num int,CTime DateTime)
插入蛇值('instant面条咯,'2015-08-10 16:20:05)
插入值('cigarette蛇',2,2,'2015-08-10 18:21:10)
插入值('cigarette蛇',1,5,'2015-08-10 20:21:10)
插入蛇值('cigarette B,1,6,'2015-08-10 20:21:10)
插入蛇值('cigarette B,9,'2015-08-10 20:21:10)
插入蛇值('cigarette C,2,9,'2015-08-10 20:21:10)
2。完成24小时的数据
枚举0-23自然数 / * * /
X0
选择数字为H)
从spt_values主..
类型= 'p'
和数字> 0
和数字< 23
查找表的所有内容)
X1
如(选择明确)
转换(varchar(100),CTime,23)为D
从蛇
)完成日期的所有24小时
X2
选择X1,
x0。H
从X1
交叉
连接x0
),
X3
选择名称,
型,
号码,
DatePart(时、CTime)H
从蛇
),终点线转列 / *需要使用数据。
X4
选择x2,
x2检验,
x3.name,
x3.type,
x3.num
从X2
左上X3加入X3。H = H X2。
)
三.线柱
选择空({ 0 },0)为{ 00 },
isnull({ 1 },0)为{ 01 },
isnull({ 2 },0)为{ 02 },
isnull({ 3 },0)为{ 03 },
isnull({ 4 },0)为{ 04 },
isnull({ 5 },0)为{ 05 },
isnull({ 6 },0)为{ 06 },
isnull({ 3 },7)为{ 07 },
isnull({ 8 },0)为{ 08 },
isnull({ 9 },0)为{ 09 },
isnull({ 10 },0)为{ 10 },
isnull({ 3 },11)为{ 11 },
isnull({ 12 },0)为{ 12 },
isnull({ 13 },0)为{ 13 },
isnull({ 14 },0)为{ 14 },
ISNULL ({3}, 15) AS {15},
isnull({ 16 },0)为{ 16 },
isnull({ 17 },0)为{ 17 },
isnull({ 18 },0)为{ 18 },
isnull({ 19 },15)为{ 19 },
isnull({ 20 },0)为{ 20 },
isnull({ 21 },0)为{ 21 },
isnull({ 22 },0)为{ 22 },
isnull({ 23 },15)为{ 23 },
型,
D日期
从(选择d),
H,
型,
号码
从X4
)t(努姆)中的h({ 0 },{ 1 },{ 2 },{ 3 },{ 4 },{ 4 }),
{ 7 }、{ 8 }、{ 9 }、{ 10 }、{ 11 }、{ 12 },
{ 13 }、{ 14 }、{ 15 }、{ 16 }、{ 17 }、{ 18 },
{ 19 }、{ 20 }、{ 21 }、{ 22 }、{ 23 })t
类型不是空的
看看最后的效果,只有1天的数据可能看起来不是很直观。
本文共分2个技术要点。
1。使用数字辅助表填写缺失记录
2.pivot排的使用
功能 以上内容是如何计算的全部内容,SQLServer。希望你能喜欢。