1

我对 SQL 完全陌生,我正在努力从销售点软件创建数据馈送以进行第三方分析。以下是将上传到数据馈送的 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","Field_1"

"1","2013 年 4 月 24 日上午 12:00:00.000",19,1,270.27

"11","4/24/2013 12:00:00.000 AM",10,1,32.95

"11","2013 年 4 月 24 日上午 12:00:00.000",12,4,229.24

"11","2013 年 4 月 24 日上午 12:00:00.000",13,1,137.28

您会注意到 TKT_TIM_HR 是处理工单的 HOUR,并且在 11 小时内没有处理工单。

即使没有门票/销售号码,我如何修改查询以便在 11 小时内存在一行?(将NULL算为零??)

非常感谢您的任何帮助,,

泰勒

4

2 回答 2

0

如果您可以使用,最简单的方法是将列设置为不允许空值并具有默认值 0。

于 2013-04-29T00:22:22.137 回答
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]
于 2013-04-29T02:39:29.727 回答