如何在数据库中获取此输出? [英] How do I get This Output in database?

查看:60
本文介绍了如何在数据库中获取此输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据:

Year_1 Year_2 Year_3 Year_1_Value Year_2_Value Year_3_Value
-------------------------------------------------- -------------------
2010 2011 2012 155119145


我该如何选择以下

从表中选择Year_1_Value AS Year_1;
(类似于从表中选择Year_1_Value AS"2010")

输出如下:

2010
------
155

有人可以帮我吗?
提前谢谢!!< b></b>

I have data as

Year_1 Year_2 Year_3 Year_1_Value Year_2_Value Year_3_Value
---------------------------------------------------------------------
2010 2011 2012 155 119 145


how can i select following

select Year_1_Value AS Year_1 from table;
(Similar to select Year_1_Value AS ''2010'' from table)

output like:

2010
------
155

can any one help me??
thanx in advance!!<b></b>

推荐答案

这似乎是一个糟糕的设计.不应将年份和值作为单独的列,而应使用包含两列的表:
-年
-值

因此表中的数据将是:
年值
---- -----
2010 155
2011 119
2012 145

这样,您总是可以从同一列中查询适当的年份.列名称的含义是,如果要在UI中显示年份,则应从数据中(从Year列中)获取正确的标签/文本/等.
This looks like a bad design. Instead of having years and values as separate columns, you should use a table with two columns:
- Year
- Value

So the data in the table would be:
Year Value
---- -----
2010 155
2011 119
2012 145

With that, you would query for proper year always from the same column. What comes to the column name, if you want to show the year in the UI, you should fetch the proper label/text/etc from the data (from Year column).


您好,mika ,

thnx提出建议,但是我必须以这种标准的bcoz方式进行操作,然后我使用Pivoting ...通过以下代码获得了解决方案....

创建过程`table_name`(
PYear_1 VARCHAR(50),
PYear_2 VARCHAR(50),
PYear_3 VARCHAR(50),
PYear_4 VARCHAR(50),
PYear_5 VARCHAR(50),
PYear_6 VARCHAR(50),
PYear_7 VARCHAR(50),
PYear_8 VARCHAR(50)
)
开始

SET @ NYear_1 = PYear_1;
SET @ NYear_2 = PYear_2;
SET @ NYear_3 = PYear_3;
SET @ NYear_4 = PYear_4;
SET @ NYear_5 = PYear_5;
SET @ NYear_6 = PYear_6;
SET @ NYear_7 = PYear_7;
SET @ NYear_8 = PYear_8;


SET @s = CONCAT("SELECT id,
SUM(IF(Year_1 =,@ NYear_1,",Year_1_Value,0))AS'',@ NYear_1,"'',
SUM(IF(Year_2 =,@ NYear_2,",Year_2_Value,0))AS'',@ NYear_2,"'',
SUM(IF(Year_3 =,@ NYear_3,",Year_3_Value,0))AS'',@ NYear_3,"'',
SUM(IF(Year_4 =,@ NYear_4,",Year_4_Value,0))AS'',@ NYear_4,"'',
SUM(IF(Year_5 =,@ NYear_5,",Year_5_Value,0))AS'',@ NYear_5,"'',
SUM(IF(Year_6 =,@ NYear_6,",Year_6_Value,0))AS'',@ NYear_6,"'',
SUM(IF(Year_7 =,@ NYear_7,",Year_7_Value,0))AS'',@ NYear_7,"'',
SUM(IF(Year_8 =,@ NYear_8,",Year_8_Value,0))AS'',@ NYear_8,"''
FROM table where tableid = 19 GROUP BY id);


从@s准备stmt;

执行stmt;



END
Hi mika,

thnx for suggestion, but i have to do it in that way bcoz of such criteria, and i got the solution through the following code using Pivoting....

CREATE PROCEDURE `table_name`(
PYear_1 VARCHAR(50),
PYear_2 VARCHAR(50),
PYear_3 VARCHAR(50),
PYear_4 VARCHAR(50),
PYear_5 VARCHAR(50),
PYear_6 VARCHAR(50),
PYear_7 VARCHAR(50),
PYear_8 VARCHAR(50)
)
BEGIN

SET @NYear_1 =PYear_1;
SET @NYear_2 =PYear_2;
SET @NYear_3 =PYear_3;
SET @NYear_4 =PYear_4;
SET @NYear_5 =PYear_5;
SET @NYear_6 =PYear_6;
SET @NYear_7 =PYear_7;
SET @NYear_8 =PYear_8;


SET @s = CONCAT("SELECT id,
SUM( IF( Year_1 = ", @NYear_1,", Year_1_Value, 0 ) ) AS ''", @NYear_1,"'',
SUM( IF( Year_2 = ", @NYear_2,", Year_2_Value, 0 ) ) AS ''", @NYear_2,"'',
SUM( IF( Year_3 = ", @NYear_3,", Year_3_Value, 0 ) ) AS ''", @NYear_3,"'',
SUM( IF( Year_4 = ", @NYear_4,", Year_4_Value, 0 ) ) AS ''", @NYear_4,"'',
SUM( IF( Year_5 = ", @NYear_5,", Year_5_Value, 0 ) ) AS ''", @NYear_5,"'',
SUM( IF( Year_6 = ", @NYear_6,", Year_6_Value, 0 ) ) AS ''", @NYear_6,"'',
SUM( IF( Year_7 = ", @NYear_7,", Year_7_Value, 0 ) ) AS ''", @NYear_7,"'',
SUM( IF( Year_8 = ", @NYear_8,", Year_8_Value, 0 ) ) AS ''", @NYear_8,"''
FROM table where tableid=19 GROUP BY id");


PREPARE stmt FROM @s;

EXECUTE stmt;



END


这篇关于如何在数据库中获取此输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆