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 } ?>
4

2 に答える 2

0

現在の使い方よりも、日付フィールドでグループ化する方が良いと思います。

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

しかし、ユーザーを識別するために使用するフィールドがわかりません。そのフィールドでグループ化を試みることもできます。

于 2012-07-31T21:15:49.287 に答える
0

こんにちは、これを試すことができます

異なるfitstname、datename(month,datereceived)、count(*)をユーザーグループからfirstname、datename(month,datereceived)で選択

于 2012-07-31T21:19:55.047 に答える