これらの列の表があります:
userID, date, NumberofLogins
基本的には、ユーザーが何回ログインしたかを記録します。
SQLクエリを使用して、これを次のテーブルに変換するにはどうすればよいですか?
UserID, NumberofLoginsDate1, NumberofLoginsDate2, ..., NumberofLoginsDate31.
1 か月分のデータしかないので、これで問題ありません。
これらの列の表があります:
userID, date, NumberofLogins
基本的には、ユーザーが何回ログインしたかを記録します。
SQLクエリを使用して、これを次のテーブルに変換するにはどうすればよいですか?
UserID, NumberofLoginsDate1, NumberofLoginsDate2, ..., NumberofLoginsDate31.
1 か月分のデータしかないので、これで問題ありません。
ピボット クエリでも実行できます。Dx の部分を 31 まで繰り返します。テーブルに 8 月よりも多くのデータがある場合は、そのためのフィルターも追加します。(月(日付) = 8)
SELECT
U.userID
,D1.NumberofLogins AS NumberofLoginsDate1
,D2.NumberofLogins AS NumberofLoginsDate2
,Dx.NumberofLogins AS NumberofLoginsDatex
...
FROM (SELECT DISTINCT userID FROM tblLogins) U
LEFT JOIN (SELECT userID, NumberofLogins FORM tblLogins WHERE DAY(date) = 1) D1
ON U.userID = D1.userID
LEFT JOIN (SELECT userID, NumberofLogins FORM tblLogins WHERE DAY(date) = 2) D2
ON U.userID = D1.userID
LEFT JOIN (SELECT userID, NumberofLogins FORM tblLogins WHERE DAY(date) = x) Dx
ON U.userID = Dx.userID
...
また
SELECT
userID
,SUM(CASE WHEN DAY(date) = 1 THEN NumberofLogins END) AS NumberofLoginsDate1
,SUM(CASE WHEN DAY(date) = 2 THEN NumberofLogins END) AS NumberofLoginsDate2
,SUM(CASE WHEN DAY(date) = x THEN NumberofLogins END) AS NumberofLoginsDatex
...
FROM tblLogins
WHERE MONTH(date) = 8
GROUP BY userID
注: MySQL を想定しています (したがって、Current_Date
関数を使用するため、すべての DBMS で使用できるわけではありません)。
SELECT userID
, Sum(CASE WHEN `date` = Current_Date THEN NumberofLogins END) As NumberofLoginsDate1
, Sum(CASE WHEN `date` = DateAdd(dd, -1, Current_Date) THEN NumberofLogins END) As NumberofLoginsDate2
, Sum(CASE WHEN `date` = DateAdd(dd, -2, Current_Date) THEN NumberofLogins END) As NumberofLoginsDate3
, ...
, Sum(CASE WHEN `date` = DateAdd(dd, -31, Current_Date) THEN NumberofLogins END) As NumberofLoginsDate31
FROM your_table
GROUP
BY userID