我是SQL的新手,我正致力于从销售点软件创建数据Feed以进行第三方分析。以下是将上传到数据Feed的CSV的要求:
.CSV文件应包含具有以下值的行: STORE ID表示唯一的商店标识符(即Store1),并且应包括您的链名称(与文件名相同的格式)和特定的商店编号。这不应包括逗号之前或之后的任何空格或标点符号。
- MM / DD / YYYY格式的日期
-HH对应使用24小时制的适当小时(0-23,0表示午夜到凌晨1点)。
- COUNT值是该特定营业时间的交易计数,如上一节所定义。
- SALES DOLLARS值对应于该小时内累计的销售总额,如上一节中所定义。请注意,不能使用逗号作为千位分隔符或美元符号符号。
- TRAFFIC PLACEHOLDER是必填字段,但应保留为0值。
示例输出
Wxyz434,02 / 28 / 2011,13,56,446.34,0
Wxyz434,02 / 28 / 2011,14,61,482.28,0
Wxyz434,02 / 28 / 2011,15,63,382.80,0
我已经能够在我的POS软件中的数据导出实用程序中找到这些表,并且我已经使用了这个SQL查询:
/***** Script for Headcount Data *****/
select [STR_ID]
,[BUS_DAT]
,[TKT_TIM_HR]
,COUNT ([TKT_NO])
,SUM ([SAL_TOT])
from MyData.dbo.VI_PS_TKT_HIST
where BUS_DAT between '04-24-2013 00:00:00' and '04-24-2013 11:59:59' and
TKT_TIM_HR between '10' and '19'
group by BUS_DAT, STR_ID, TKT_TIM_HR
部分结果:
“STR_ID”, “BUS_DAT”, “TKT_TIM_HR”, “字段”, “Field_1”
“1”,“4/24/2013 12:00:00.000 AM”,19,1,270.27
“11”,“2013年4月24日12:00:00.000 AM”,10,1,32.95
“11”,“4/24/2013 12:00:00.000 AM”,12,4,229.24
“11”,“2013年4月24日12:00:00.000 AM”,13,1,137.28
您会注意到TKT_TIM_HR是处理故障单的HOUR,并且在11小时内没有处理过故障单。
即使没有门票/销售号码,我如何修改查询以便11小时内存在一行? (将NULL计为零??)
非常感谢您的帮助,
泰勒
答案 0 :(得分:0)
最简单的方法是,如果您可以使用,则将列设置为不允许空值并且默认值为0.
答案 1 :(得分:0)
您需要创建一个“日历”关系,以用作子查询,该子查询可以是LEFT OUTER JOIN的LHS。如果你只需要按小时报告,这样的事情就可以了:
select [Hour], AmPm
from (
select Hour= 1 union all select 2 union all select 3 union all select 4 union all
select Hour= 5 union all select 6 union all select 7 union all select 8 union all
select Hour= 9 union all select 10 union all select 11 union all select 12
) H
cross join ( select AmPm = 'am' union all select 'pm'
) T
order by AmPm,[Hour]