簡體   English   中英

訪問包含空白字段的SQL Pivot查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM