[英]Access SQL Pivot Query That Includes Blank Fields
I'm trying to write an Access SQL pivot query that displays values in a single row for all codes in a table for a given ID value, even if the fields are blank. 我正在尝试编写一个Access SQL透视查询,该查询在一行中为给定ID值显示表中所有代码的值,即使字段为空。 So far, everything that I've tried has returned either multiple rows or, if the data's on one row, any blank fields get left out.
到目前为止,我尝试过的所有结果都返回了多行,或者,如果数据在一行中,则所有空白字段都被排除在外。
I've tried this as a pivot query, as a self-join, using IIF, as a union query, and anything else I could think of or find online. 我已经尝试过将其作为数据透视查询,使用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;
I've tried adding IFF statements to the SELECT fields, but no dice. 我尝试将IFF语句添加到SELECT字段中,但没有骰子。
I'm hoping someone can suggest the right approach I should be using to end up with the desired results shown above. 我希望有人可以建议我应该使用的正确方法,以最终获得上面所示的预期结果。 Thanks for any help you can give.
谢谢你提供的所有帮助。
You must group by ID and get the columns with conditional MAX: 您必须按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;
Results: 结果:
ID AT PL TJ NX
329 7465 7998 6232
If you remove the WHERE part, the result is: 如果删除WHERE部分,则结果为:
ID AT PL TJ NX
248 3013
329 7465 7998 6232
477 1403
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.