【发布时间】:2016-03-16 06:08:48
【问题描述】:
但我想使用户名列的动态数量..
我试过这个查询
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'sum(case when nama = ''', nama, ''' then count else 0 end) AS ',
replace(nama,'','')
)
)INTO @sql
from (SELECT
DATE_FORMAT(a.datetime,"%m-%Y") as bulan,
b.nm_user as nama,
count(a.kd_user) as count
FROM tbl_log_login a, tbl_user b where a.kd_user=b.id
group by a.kd_user, DATE_FORMAT(a.datetime,"%m-%Y") order by a.datetime) c;
SET @sql = CONCAT('SELECT bulan, ',@sql, ' from (SELECT
DATE_FORMAT(a.datetime,"%m-%Y") as bulan,
b.nm_user as nama,
count(a.kd_user) as count
FROM tbl_log_login a, tbl_user b where a.kd_user=b.id
group by a.kd_user, DATE_FORMAT(a.datetime,"%m-%Y") order by a.datetime) c
group by bulan');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但没有任何意见,可能该查询是错误的.. 帮助,谢谢..
【问题讨论】:
-
尝试在第一次选择后打印您的
@sql变量,看看里面有什么。 -
可能是您将结果分配给
@sql变量,其中结果包含多于一行 -
对不起,你可以试试link
SQL Fiddle with Demo非常感谢..
标签: mysql