[英]Access SQL Pivot Query That Includes Blank Fields
我正在尝试编写一个Access SQL透视查询,该查询在一行中为给定ID值显示表中所有代码的值,即使字段为空。 到目前为止,我尝试过的所有结果都返回了多行,或者,如果数据在一行中,则所有空白字段都被排除在外。
我已经尝试过将其作为数据透视查询,使用IIF的自联接,作为联合查询以及其他我能想到或在线找到的东西。
Sample Data:
ID TypeCode TypeID
248 AT 3013
329 AT 7465
329 PL 7998
329 TJ 6232
477 NX 1403
Desired results on a query of ID 329:
ID AT PL TJ NX
329 7465 7998 6232 <blank>
What I get:
ID AT PL TJ
329 7465 7998 6232
or
ID AT PL TJ
329 7465
329 7998
329 6232
Desired results on a query of ID 248:
ID AT PL TJ NX
248 7465 <blank> <blank> <blank>
What I get:
ID AT
248 7465
Sample query:
TRANSFORM Avg(MyTable.[ID]) AS ID
SELECT MyTable.[ID], TypeCode, TypeID
FROM MyTable WHERE MyTable.ID = 329
GROUP BY TypeCode, TypeID
PIVOT MyTable.TypeCode;
我尝试将IFF语句添加到SELECT字段中,但没有骰子。
我希望有人可以建议我应该使用的正确方法,以最终获得上面所示的预期结果。 谢谢你提供的所有帮助。
您必须按ID分组,并使用条件MAX获取列:
SELECT ID,
MAX(IIF(TypeCode = 'AT', TypeID, NULL)) AS AT,
MAX(IIF(TypeCode = 'PL', TypeID, NULL)) AS PL,
MAX(IIF(TypeCode = 'TJ', TypeID, NULL)) AS TJ,
MAX(IIF(TypeCode = 'NX', TypeID, NULL)) AS NX
FROM MyTable
WHERE ID = 329
GROUP BY ID;
结果:
ID AT PL TJ NX
329 7465 7998 6232
如果删除WHERE部分,则结果为:
ID AT PL TJ NX
248 3013
329 7465 7998 6232
477 1403
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.