select * from (select a.机房,b.主机名称,b.主机状态 from F0710A a left join G0710B on a.id = b.id) x pivot (count(主机名称) for 主机状态 in ([1],[2],[0]))y 改为MYSQL
时间: 2024-04-09 17:32:57 浏览: 102
insert into tbl() select * from tb2中加入多个条件
在MySQL中,我们可以使用动态SQL来实现类似于PIVOT的功能。以下是一种实现方法:
```sql
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'COUNT(CASE WHEN 主机状态 = ',
主机状态,
' THEN 主机名称 END) AS `',
主机状态,
'`'
)
) INTO @sql
FROM G0710B;
SET @sql = CONCAT('SELECT 机房, ', @sql, '
FROM (
SELECT a.机房, b.主机名称, b.主机状态
FROM F0710A a
LEFT JOIN G0710B b ON a.id = b.id
) x
GROUP BY 机房');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
```
这种方法通过动态生成SQL语句,将主机状态作为列进行统计,并将结果按照机房进行分组。
阅读全文