SQL查询(转置?)
我进行此查询是为了从数据库中选择值SQL查询(转置?),sql,Sql,我进行此查询是为了从数据库中选择值 SELECT SAMPLE_TIME, ENTITY, STAT_GROUP, STAT_ID, STAT_NAME, CONVERT(decimal(16,2), STAT_VALUE/100.0) AS PERCENTAGE FROM VPXV_HIST_STAT_YEARLY WHERE ENTITY LIKE 'vm-1783' AND SAMPLE_TIME > '2017-10-01' AND SAMPLE_TIME < '2017-1
SELECT
SAMPLE_TIME, ENTITY, STAT_GROUP, STAT_ID, STAT_NAME, CONVERT(decimal(16,2), STAT_VALUE/100.0) AS PERCENTAGE
FROM
VPXV_HIST_STAT_YEARLY WHERE ENTITY LIKE 'vm-1783'
AND SAMPLE_TIME > '2017-10-01'
AND SAMPLE_TIME < '2017-12-31'
AND ((STAT_GROUP = 'CPU' OR STAT_GROUP = 'MEM'))
AND STAT_NAME = 'USAGE'
ORDER by SAMPLE_TIME,STAT_GROUP ASC
这是输出:
|数据|实体|统计|组|统计| ID |统计|名称|百分比|
|------|-----|------|-----|------|------|
|2017-10-02 | vm-1783 | cpu | 2 |使用| 12.04|
|2017-10-02 | vm-1783 | mem | 24 |用法| 7.21|
|2017-10-03 | vm-1783 | cpu | 2 |使用| 4.89|
|2017-10-03 | vm-1783 | mem | 24 |用法| 2.69|
但我希望得到这种输出:
|数据| CPU |内存|
|------ |---- |--- |
| 2017-10-02 | 12.04 | 7.21 |
|2017-10-03 | 4.89 | 2.69|
我试过吹牛,但也许我弄错了。
有什么帮助吗?您可以使用条件聚合:
SELECT SAMPLE_TIME,
MAX(CASE WHEN STAT_GROUP = 'MEM'
THEN CONVERT(decimal(16,2), STAT_VALUE / 100.0)
END) as CPU,
MAX(CASE WHEN STAT_GROUP = 'MEM'
THEN CONVERT(decimal(16,2), STAT_VALUE / 100.0)
END) as CPU,
FROM VPXV_HIST_STAT_YEARLY
WHERE ENTITY LIKE 'vm-1783' AND
SAMPLE_TIME > '2017-10-01' AND
SAMPLE_TIME < '2017-12-31' AND
STAT_GROUP IN ('CPU', 'MEM') AND
STAT_NAME = 'USAGE'
GROUP BY SAMPLE_TIME
ORDER by SAMPLE_TIME;
它起作用了!+------+------+++|2017-10-02 00:00:00.000 | 12.04 | 7.21 | +-------------+----+----+ | 2017-10-03 00:00:00.000 | 4.89 | 2.69 | +-------------+----+----+ | 2017-10-04 00:00:00.000 | 13.70 | 18.33 | +-------------+----+----+ | 2017-10-05 00:00:00.000 | 21.80 | 30.82 | +-------------+----+----+ | 2017-10-06 00:00:00.000 | 11.67 | 16.33 | +-------------+----+----+