我有一个名为类别的表,其值如下,
类别 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/