首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问SQL枢轴结果合并列

访问SQL枢轴结果合并列
EN

Stack Overflow用户
提问于 2013-11-28 10:46:13
回答 1查看 365关注 0票数 1

我试图通过使用PIVOT查询将访问表中的数据以不同的格式放置。我已经搜索了整个互联网,但我不能真正得到想要的结果。这就是我目前所得到的..。

原表:

代码语言:javascript
复制
+----+-------+
| ID | Value |
+----+-------+
|  2 |     2 |
|  3 |     3 |
|  4 |     4 |
|  5 |     5 |
|  6 |     6 |
|  6 |     7 |
|  6 |     8 |
|  7 |     9 |
|  8 |    10 |
|  9 |    11 |
| 12 |    12 |
| 13 |     6 |
| 13 |     8 |
| 14 |     9 |
| 15 |    10 |
| 16 |    11 |
| 20 |    12 |
+----+-------+

应用以下查询时:

代码语言:javascript
复制
TRANSFORM Max(Value)
SELECT ID
FROM tempTable
GROUP BY ID
PIVOT Value
;

I get:

代码语言:javascript
复制
+----+---+---+---+---+---+---+---+---+----+----+----+
| ID | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
+----+---+---+---+---+---+---+---+---+----+----+----+
|  2 | 2 |   |   |   |   |   |   |   |    |    |    |
|  3 |   | 3 |   |   |   |   |   |   |    |    |    |
|  4 |   |   | 4 |   |   |   |   |   |    |    |    |
|  5 |   |   |   | 5 |   |   |   |   |    |    |    |
|  6 |   |   |   |   | 6 | 7 |   | 9 |    |    |    |
|  7 |   |   |   |   |   |   |   | 9 |    |    |    |
|  8 |   |   |   |   |   |   |   |   | 10 |    |    |
|  9 |   |   |   |   |   |   |   |   |    | 11 |    |
| 12 |   |   |   |   |   |   |   |   |    |    | 12 |
| 13 |   |   |   |   | 6 |   |   |   |    |    |    |
| 13 |   |   |   |   |   |   | 8 |   |    |    |    |
| 14 |   |   |   |   |   |   |   | 9 |    |    |    |
| 15 |   |   |   |   |   |   |   |   | 10 |    |    |
| 16 |   |   |   |   |   |   |   |   |    | 11 |    |
| 20 |   |   |   |   |   |   |   |   |    |    | 12 |
+----+---+---+---+---+---+---+---+---+----+----+----+

我想要的

(目前有最多4个不同的值,但将来可能会更多)

代码语言:javascript
复制
+----+--------+--------+--------+--------+
| ID | Value1 | Value2 | Value3 | Value4 |
+----+--------+--------+--------+--------+
|  2 |      2 |        |        |        |
|  3 |      3 |        |        |        |
|  4 |      4 |        |        |        |
|  5 |      5 |        |        |        |
|  6 |      6 |      7 |      9 |        |
|  7 |      9 |        |        |        |
|  8 |     10 |        |        |        |
|  9 |     11 |        |        |        |
| 12 |     12 |        |        |        |
| 13 |      6 |      8 |        |        |
| 14 |      9 |        |        |        |
| 15 |     10 |        |        |        |
| 16 |     11 |        |        |        |
| 20 |     12 |        |        |        |
+----+--------+--------+--------+--------+

我真的希望一些奇妙的访问SQL英雄可以帮助我在这里!提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-28 12:12:29

通过使用以下查询,我们可以为每一行分配一个“值‘n”的秩顺序

代码语言:javascript
复制
SELECT t1.ID, t1.Value, "Value" & COUNT(*) AS ValueRank
FROM
    tempTable AS t1
    INNER JOIN
    tempTable AS t2
        ON t2.ID = t1.ID AND t2.Value <= t1.Value
GROUP BY t1.ID, t1.Value

该查询返回

代码语言:javascript
复制
ID  Value  ValueRank
--  -----  ---------
 2      2  Value1   
 3      3  Value1   
 4      4  Value1   
 5      5  Value1   
 6      6  Value1   
 6      7  Value2   
 6      8  Value3   
 7      9  Value1   
 8     10  Value1   
 9     11  Value1   
12     12  Value1   
13      6  Value1   
13      8  Value2   
14      9  Value1   
15     10  Value1   
16     11  Value1   
20     12  Value1   

因此,我们只需对此进行交叉表查询

代码语言:javascript
复制
TRANSFORM Max(Value) AS MaxOfValue
SELECT ID
FROM
    (
        SELECT t1.ID, t1.Value, "Value" & COUNT(*) AS ValueRank
        FROM
            tempTable AS t1
            INNER JOIN
            tempTable AS t2
                ON t2.ID = t1.ID AND t2.Value <= t1.Value
        GROUP BY t1.ID, t1.Value
    )
GROUP BY ID
PIVOT ValueRank

返回

代码语言:javascript
复制
ID  Value1  Value2  Value3
--  ------  ------  ------
 2       2                
 3       3                
 4       4                
 5       5                
 6       6       7       8
 7       9                
 8      10                
 9      11                
12      12                
13       6       8        
14       9                
15      10                
16      11                
20      12                
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20263957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档