2012-07-31 52 views
0

我有一张用户表,我需要运行报表并显示给定年份中每个月用户进入系统的次数。我创建了第一列返回不同用户的表格。接下来,在右侧,我想显示用户每个月输入了多少次。我目前的代码只计算每个月的总计,并将所有用户的每月总计。在下面的例子中,每个用户列出5月7日,6月13日和7月12日。但我希望它能像下面那样展示它按月分解的位置。不同记录计数总计按月计

Users May June July 
User1  1  2  3  
User2  1  1  2 
User3  5  10  7 

<?php 
$sql = "SELECT record,count(*) as TotalCount, 

(select DISTINCT count(*) from Table1 WHERE datereceived BETWEEN '2012-05-01' AND '2012-05-31') as May, 
(select DISTINCT count(*) from Table1 WHERE datereceived BETWEEN '2012-06-01' AND '2012-06-30') as June, 
(select DISTINCT count(*) from Table1 WHERE datereceived BETWEEN '2012-07-01' AND '2012-07-31') as July 
FROM Table1 GROUP BY record"; 
$params = array(); 
$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET); 
$stmt = sqlsrv_query($conn, $sql , $params, $options); 
if($stmt === false) 
{ 
echo "Error in query preparation/execution.\n"; 
die(print_r(sqlsrv_errors(), true)); 
} 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
?> 

<tr id="styling"> 
    <td class="style"><?php echo $row['record']; ?></td> 
    <td class="style"><?php echo $row['May']; ?></td> 
    <td class="style"><?php echo $row['June']; ?></td> 
    <td class="style"><?php echo $row['July']; ?></td> 
</tr> 
<?php } ?> 
+0

你能告诉你的表结构体? – 2012-07-31 21:16:19

回答

0

我认为最好是按日期字段进行分组,而不是现在如何使用它。

select DISTINCT count(*) from Table1 GROUP BY EXTRACT(MONTH FROM datereceived) 

但我看不出哪个字段用于识别用户。您可以尝试在该字段上进行分组。

+0

我正在使用记录字段来识别用户。表结构是输入用户记录时的日期时间字段,将当前日期写入此字段,用户名(记录)字段,然后将其他字段用于信息。我正在尝试查看日期时间字段(datereceived),并根据日期将其分成不同的月份。 – Sappster 2012-08-01 12:47:27

0

嗨,你可以试试这个

选择不同fitstname,DATENAME(月,datereceived),从 用户组COUNT(*)的姓名,DATENAME(月,datereceived)

+0

这只返回了不同的用户名,但每个月都没有总计。 – Sappster 2012-08-01 12:55:51