我有一个类似于这样的Access数据库:
ID | TestDate | Test1 | Test2 | Test 3 |
1 | Date1 | 10 | 20 | 25 |
1 | Date2 | 8 | 21 | 23 |
1 | Date3 | 9 | 18 | 23 |
2 | Date1 | 13 | 19 | 22 |
我想将行数据转置为列并保留以前列标题的名称,如下所示:
ID = 1
| Date1 | Date2 | Date3 | etc...
Test1 | 10 | 8 | 3 |
Test2 | 20 | 21 | 18 |
Test3 | 25 | 23 | 23 |
ID = 2
| Date1 |
Test1 | 13 |
Test2 | 19 |
Test3 | 22 |
*The Date1 in the different IDs need not be the same. Date1 is the date the ID
had the Test for the first time.
这样可以更容易地监控测试值的趋势。我试着看,但我偶然发现的查询增加了价值。我只需要转换数据而无需复制并粘贴到excel中。任何MS Access查询或VBA代码都非常感谢。谢谢。
答案 0 :(得分:1)
怎么样:
TRANSFORM SUM(q.testval) AS sumoftestval
SELECT q.id,
q.test
FROM (SELECT t2.id,
t2.testdate,
"test1" AS Test,
t2.test1 AS TestVal
FROM t2
UNION ALL
SELECT t2.id,
t2.testdate,
"test2" AS Test,
t2.test2 AS TestVal
FROM t2
UNION ALL
SELECT t2.id,
t2.testdate,
"test3" AS Test,
t2.test3 AS TestVal
FROM t2) AS q
GROUP BY q.id,
q.test
PIVOT q.testdate;
选择ID
TRANSFORM Sum(q.testval) AS sumoftestval
SELECT q.test
FROM (SELECT t2.id,
t2.testdate,
"test1" AS Test,
t2.test1 AS TestVal
FROM t2
UNION ALL
SELECT t2.id,
t2.testdate,
"test2" AS Test,
t2.test2 AS TestVal
FROM t2
UNION ALL
SELECT t2.id,
t2.testdate,
"test3" AS Test,
t2.test3 AS TestVal
FROM t2) AS q
WHERE q.id=1
GROUP BY q.test
PIVOT q.testdate;