我的观点给出了合理正确的答案:
DELIMITER $$
DROP VIEW IF EXISTS `test`.`new_temp`$$
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `new_temp` AS
SELECT `temp`.`pcount` AS `ind_type`,SUM(`temp`.`pcount`) AS `Index_val` FROM `temp` UNION ALL
SELECT `temp`.`ncount` AS `sum`,SUM(`temp`.`ncount`) AS `ncount` FROM `temp` $$
DELIMITER ;
输出继电器:
ind_type Index_val
----------------------
2 23
2 34
我希望它能提供这种输出:
New_temp
ind_type Index_val
-------------------------------
pcount 23
ncount 34
问题在于我编写的代码。我以不同的方式尝试但我没有得到它。任何想法?
答案 0 :(得分:1)
通常,您可以将值放在规范化的字典表或类似表中。但由于您未在查询中提供任何此类内容,因此以下内容应提供所需的结果。
SELECT 'pcount' AS `ind_type`,SUM(`temp`.`pcount`) AS `Index_val` FROM `temp` UNION ALL
SELECT 'ncount' AS `ind_type`,SUM(`temp`.`ncount`) AS `ncount` FROM `temp` $$
答案 1 :(得分:1)
您要获得的是列的实际名称而不是它的值。在这种情况下,而不是说
SELECT `temp`.`pcount` AS `ind_type`
喜欢
SELECT 'pcount' AS `ind_type`
修改强>
不确定给出相同结果是什么意思。我尝试了同样的工作,它工作得很好;如下
create table temp (pcount int,ncount int);
insert into temp values(22,33);
insert into temp values(23,43);
create VIEW new_temp as
select 'pcount' AS 'ind_type',sum(pcount) as 'ind_val'
from temp
union
select 'ncount' AS 'ind_type',sum(ncount) as 'ind_val'
from temp;
检查此SQL小提琴http://sqlfiddle.com/#!2/bbcf6/1