表A
| 店鋪編號 | 物品 | 價格 |
|---|---|---|
| A店 | 專案1 | 101 |
| A店 | 專案2 | 102 |
| A店 | 第 3 項 | 103 |
| A店 | 專案4 | 104 |
| A店 | 專案5 | 105 |
| A店 | 第6項 | 106 |
| A店 | 第 7 項 | 107 |
| …… | ...... | ...... |
| A店 | 第 27 項 | 127 |
| B店 | 專案1 | 201 |
| B店 | ...... | ...... |
| B店 | 第 27 項 | 227 |
| C店 | 專案1 | 301 |
| C店 | ...... | ...... |
| C店 | 第 27 項 | 327 |
假設我有一個像上面的表格,我想轉換為下面的表格
| 店鋪編號 | 專案1 | 專案2 | 第 3 項 | 專案4 | ...... | 第 27 項 |
|---|---|---|---|---|---|---|
| A店 | 101 | 102 | 103 | 104 | ...... | 127 |
我嘗試使用帶有多個左連接的查詢
SELECT T1.[Shop ID], T1.[Price] AS Item1 .... T27.[Price] AS Item 27
FROM (TableA AS T1
LEFT JOIN TableA AS T2 ON T1.[Shop ID] = T2.[Shop ID])
LEFT JOIN TableA AS T3 ON T1.[Shop ID] = T3.[Shop ID])
...
LEFT JOIN TableA AS T27 ON T1.[Shop ID] = T27.[Shop ID]
WHERE T1.[Item] = 'Item1'
AND T2.[Item] = 'Item2'
...
AND T27.[Item] = 'Item27'
AND T1.[Shop ID] = 'Shop A'
這適用于較少數量的 LEFT JOIN 但是當 LEFT JOIN > 20 的數量時,Access 基本上永遠停止了,我的實際表有點復雜。任何人都可以建議轉換的方法?TIA
uj5u.com熱心網友回復:
一種方法是使用透視查詢:
SELECT
[Shop ID],
MAX(IIF([Item] = "Item1", Price, NULL)) AS Item1,
MAX(IIF([Item] = "Item2", Price, NULL)) AS Item2,
MAX(IIF([Item] = "Item3", Price, NULL)) AS Item3,
...
MAX(IIF([Item] = "Item27", Price, NULL)) AS Item27
FROM TableA
GROUP BY [Shop ID]
ORDER BY [Shop ID];
您還可以使用 MS Access 查看交叉表選項。
uj5u.com熱心網友回復:
嘗試 CrossTab 查詢,例如-
TRANSFORM First(t.Price) AS FirstOfPrice
SELECT t.ShopID
FROM TableA as t
GROUP BY t.ShopID
ORDER BY t.Item
PIVOT t.Item;
輸入:

輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/460162.html
