Sql server 按日期和项目分组,并计算要导出到图表的行数

Sql server 按日期和项目分组,并计算要导出到图表的行数,sql-server,tsql,sql-server-2012,pivot,group-by,Sql Server,Tsql,Sql Server 2012,Pivot,Group By,我需要一些帮助来解决一个远远超出我糟糕技能范围的问题 我有一个表,在其中我在每个产品数据表中注册访问权限,因此对于每次访问,我都有一个带有ItemCode SKU、时间戳和其他类似信息的记录: |SKU|TimeStamp |Country|Referral| |AT1|1410290655|Spain |http... | |AT2|1410290428|Spain |http... | |AT2|1410290215|Spain |http... | ...... |AT1|14102

我需要一些帮助来解决一个远远超出我糟糕技能范围的问题

我有一个表,在其中我在每个产品数据表中注册访问权限,因此对于每次访问,我都有一个带有ItemCode SKU、时间戳和其他类似信息的记录:

|SKU|TimeStamp |Country|Referral|
|AT1|1410290655|Spain  |http... |
|AT2|1410290428|Spain  |http... |
|AT2|1410290215|Spain  |http... |
......
|AT1|1410282324|Spain  |http... |
|AT3|1410282255|Spain  |http... |
|AT5|1410282128|Spain  |http... |
|AT2|1410282015|Spain  |http... |
['Date', 'AT1', 'AT2', 'AT3', 'AT4', 'AT5',....]
['141029', 125,  312,   512,   371,   125,.....]
['141028', 143,  213,   252,   621,   246,.....]
['141027', 215,  412,   312,   571,   425,.....]
我需要画一个包含所有这些信息的折线图,并且每天都要显示出来 一个月中,每个项目在1、2、3….时的次数。。。。。已显示 但由于我将选择时间范围,项目列表将在1、2、3、4。。。不是固定的,但必须由查询动态生成

因为我将使用谷歌图表,所以我需要这样一个数组:

|SKU|TimeStamp |Country|Referral|
|AT1|1410290655|Spain  |http... |
|AT2|1410290428|Spain  |http... |
|AT2|1410290215|Spain  |http... |
......
|AT1|1410282324|Spain  |http... |
|AT3|1410282255|Spain  |http... |
|AT5|1410282128|Spain  |http... |
|AT2|1410282015|Spain  |http... |
['Date', 'AT1', 'AT2', 'AT3', 'AT4', 'AT5',....]
['141029', 125,  312,   512,   371,   125,.....]
['141028', 143,  213,   252,   621,   246,.....]
['141027', 215,  412,   312,   571,   425,.....]

有谁能给我一些提示来达到这样的目标吗?

动态轴心就是你想要的。这段代码不会给出您想要的确切输出,但它应该作为一个提示和工作的依据。它应该很容易为您导出数据到CSV文件与谷歌图表使用的标题

DECLARE @sql AS NVARCHAR(MAX), @cols AS NVARCHAR(MAX)

SELECT @cols= ISNULL(@cols + ',','') + QUOTENAME(sku) 
FROM (SELECT DISTINCT sku FROM wLogs) AS Columns

SET @sql =
  N'SELECT CAST(date AS char(6)) date, ' + @cols + ' 
    FROM (SELECT sku, LEFT([TimeStamp],6) date FROM wLogs) a
    PIVOT (COUNT([sku])
          FOR sku IN (' + @cols + ')) AS p
        ORDER BY date DESC'

EXEC sp_executesql @sql
输出:

date   AT1         AT2         AT3         AT5
------ ----------- ----------- ----------- -----------
141028 1           1           1           1
141029 1           2           0           0

--------------@user3304110哦,我假设时间戳是日期格式的,我现在更改了查询,请重试。另外,你可能想删除你的答案,因为这似乎是对我答案的评论。嗨!再次感谢你的回答。。事实上,我试图添加一个评论而不是一个答案,但不能这么长。现在作品从左移第二[时间戳],6真的很感谢!Sergio@user3304110很高兴它的工作,并为我留下的盈余草率编辑抱歉不要担心!您还为我留下了一些工作:-我们还可以通过SKU ASC订购结果。。但是…查询稍微复杂一点。。还应按日期和SellerID过滤结果,并与其他表连接,以进行我添加的测试,声明@SellerID为NVARCHA20 SET@SellerID='seller1',并从选择sku左[TS],10日期从wLogs a更改为从选择sku左[TS],10来自wLogs的日期,其中sellerID='+@sellerID+'a,但我得到的列名'seller1'无效。显然,我不想让你做所有的脏活。。但请告诉我如何处理这件事