将列值访问到标题

时间:2014-07-04 09:43:25

标签: sql

我有一张桌子," Sort_age"在一个名为" Info"的文件中。

我现在所拥有的" Sort_age"如下:

year    month   code    Category    Field   Info
2013    jan      3      student     Name    John
2013    jan      3      student     Age      14
2013    feb      2      teacher     Name    Mika
2013    feb      2      teacher     Age      25

但是,我希望我的输出是这样的:

year    month   code    Category    Name    Age
2013    jan      3      student     John    14
2013    feb      2      teacher     Mika    25

我是否知道如何在microsoft ACCESS,SQL查询中进行此操作?

谢谢!

3 个答案:

答案 0 :(得分:1)

试试这个: Demo here

MS SQL Server 2008架构设置

Create table Sort_age
(year nvarchar(50),month nvarchar(50),code int,Category  nvarchar(50),Field  nvarchar(50),Info nvarchar(50))

insert into Sort_age
(year ,month ,code,Category,Field,Info)
Values

('2013','jan',3,'student','Name','John'),
('2013','jan',3,'student','Age','14'),
('2013','feb',2,'teacher','Name','Mika'),
('2013','feb',2,'teacher','Age','25')

查询1

SELECT YEAR,MONTH,CODE,CATEGORY,NAME=MAX(INFO) , AGE =MIN(INFO)
FROM Sort_age 
GROUP BY YEAR,MONTH,CODE,CATEGORY 
ORDER BY CODE DESC

<强> Results

| YEAR | MONTH | CODE | CATEGORY | NAME | AGE |
|------|-------|------|----------|------|-----|
| 2013 |   jan |    3 |  student | John |  14 |
| 2013 |   feb |    2 |  teacher | Mika |  25 |

答案 1 :(得分:0)

如果是sql server使用此

SELECT YEAR,MONTH,CODE,CATEGORY,NAME=MAX(INFO) , AGE =MIN(INFO)
FROM Table 
GROUP BY YEAR,MONTH,CODE,CATEGORY 
ORDER BY CODE DESC

答案 2 :(得分:0)

试试这个

SELECT year,Month,Code,Category,
       MAX(CASE WHEN Field = 'Name' THEN Info ELSE null END) AS Name,
       Max(CASE WHEN Field = 'Age' THEN Info ELSE null END) AS Age
FROM Sort_age
GROUP BY year,Month,Code,Category

<强> Fiddle Demo


输出

| YEAR | MONTH | CODE | CATEGORY | NAME | AGE |
|------|-------|------|----------|------|-----|
| 2013 |   jan |    3 |  student | John |  14 |
| 2013 |   feb |    2 |  teacher | Mika |  25 |