[英]MS Access Transform Query to MySQL Query
我正在將MS Access數據庫移至MySQL,並且遇到了一些查詢問題。
我大約有80%的人完成了轉移查詢的工作,但是這一特殊問題給我帶來了麻煩。
TRANSFORM Nz(Max(IIf([charge_description_code] In ('AHS','AHW','AHL','RES','SAT'),"Y","N")), "N") AS Data
SELECT shipment_details.tracking_number, shipment_details.invoice_number
FROM shipment_details
WHERE tracking_number is not null
and charge_category_detail_code not in ('RADJ')
GROUP BY shipment_details.tracking_number, shipment_details.invoice_number
PIVOT shipment_details.charge_description_code In (SAT,AHW,AHS,AHL,RES);
我希望結果顯示如下:
tracking_number invoice_number SAT AHW AHS AHL RES
1Z2XXXXXXXXX625816 1329102975 N N N N N
1Z3YYYYYYYYY610514 1329109647 N N Y N N
1Z3ZZZZZZZZZ142605 1329109647 N N N Y Y
考慮條件聚合仍然可以在MS Access中使用(將IF
替換為下面的IIF
)。 通常,Access的交叉表查詢不僅僅針對少數幾個,而且還針對少數幾個數據透視表。 同樣,由於條件邏輯將NULL
解析為N
,因此NZ
是多余的。
SELECT s.tracking_number,
s.invoice_number,
MAX(IF(s.[charge_description_code] = 'SAT', 'Y', 'N')) AS 'SAT',
MAX(IF(s.[charge_description_code] = 'AHW', 'Y', 'N')) AS 'AHW',
MAX(IF(s.[charge_description_code] = 'AHL', 'Y', 'N')) AS 'AHL',
MAX(IF(s.[charge_description_code] = 'AHS', 'Y', 'N')) AS 'AHS',
MAX(IF(s.[charge_description_code] = 'RES', 'Y', 'N')) AS 'SAT'
FROM shipment_details s
WHERE s.tracking_number IS NOT NULL
AND s.charge_category_detail_code NOT IN ('RADJ')
AND s.charge_description_code IN ('AHS','AHW','AHL','RES','SAT')
GROUP BY s.tracking_number,
s.invoice_number
我認為transform
返回未設置任何值的行。 在這種情況下,適當的轉換更像這樣:
SELECT s.tracking_number, s.invoice_number,
MAX(CASE WHEN s.charge_description_code = 'SAT' THEN 'Y' ELSE 'N' END) AS SAT,
MAX(CASE WHEN s.charge_description_code = 'AHW' THEN 'Y' ELSE 'N' END) AS AHW,
MAX(CASE WHEN s.charge_description_code = 'AHL' THEN 'Y' ELSE 'N' END) AS AHL,
MAX(CASE WHEN s.charge_description_code = 'AHS' THEN 'Y' ELSE 'N' END) AS AHS,
MAX(CASE WHEN s.charge_description_code = 'RES' THEN 'Y' ELSE 'N' END) AS RES
FROM shipment_details s
WHERE s.tracking_number IS NOT NULL AND
s.charge_category_detail_code NOT IN ('RADJ')
GROUP BY s.tracking_number, s.invoice_number;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.