sql - 使用自连接将行转为列

标签 sql ms-access transpose

我有一个名为类别的表,其值如下,

类别 ID      |值(value)|旗帜

1                      25                a
2                      26                a
3                      27               
1                      28                米
2                      23                米
1                      36                p
2                      33                p

现在我想根据标志将此表中存在的行转置为列,例如

类别 ID      |值 | m值 | P值
1                      25                28               36
2                      26                23               33
3                      27                空             空

我尝试根据类别 ID 进行连接,但即使我在查询中使用左外连接,我也只是在结果集中获取匹配的记录(内连接)。

我的查询:

SELECT 
  A.CategoryId, 
  A.Value AS actual, 
  B.Value AS projected, 
  C.Value AS Manual
FROM ((a AS A left JOIN b AS B ON A.categoryid=B.categoryid) 
  left JOIN c AS C ON A.categoryid=C.categoryid) 
WHERE (((A.flag)="a") and ((B.flag)="p") and ((C.flag) ="m"))

如果我的数据位于 3 个不同的表中,我将得到正确的结果。

我只是想检查使用自连接时将行转置为列的最佳方法是什么...

谢谢, 巴拉尼

最佳答案

试试这个:

SELECT CategoryId, 
       MIN(SWITCH(YourTable.Flag = 'a',Value)) AS aValue,
       MIN(SWITCH(YourTable.Flag = 'm',Value)) AS mValue,
       MIN(SWITCH(YourTable.Flag = 'p',Value)) AS pValue
FROM YourTable
GROUP BY CategoryId

关于sql - 使用自连接将行转为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488262/

相关文章:

java - 如何使用java在SQL中查找两个时间值的差异?

c# - 仅当 SELECT 返回时才执行 DELETE

ms-access - 来自类的 VBA 调用属性

c++ - 如何使用 uBLAS 转置矩阵?

r - 转置以第一列为标题的数据框

sql - 如何创建一个基于 Postgresql 中的序列自动填充的列?

mysql,是否可以有多行分组依据?

MS Access 中的 .Net 用户控件

python - Numpy 转置向量

sql - 如何通过避免循环来优化此 t-sql 脚本代码?