我目前有一個非常簡單的 SQL 腳本,它為我們的一位特殊客戶提供售價,該客戶使用 Priceline“J”。我還想添加一列零售定價供他們參考,通常是 Priceline“R”。我的查詢目前看起來像這樣:
SELECT RS_PCL.SKU,
RS_PCL.SKU_DESC,
RS_PCL.PACKAGE,
RS_PCL.PRICE AS [Sell Price],
RS_PCL.STD AS [Start Date],
RS_PCL.END AS [End Date]
FROM RS_PCL
WHERE RS_PCL.PRICELINE = "J"
誰能幫我弄清楚如何將“R”價格線添加為另一列而不是單獨的行?我可以添加WHERE RS_PCL.PRICELINE IN ("J","R")但它會為每個零售價創建一個單獨的行,而不是在它旁邊的列中。我看過單獨的 SELECT CASE WHEN 示例,但不確定語法的確切作業原理。
價格始終具有相同的開始日期,因此只需加入 SKU 匹配且開始日期匹配的位置。
注意:對不起,我不小心編輯了你的答案,而不是我的問題......
修訂:此代碼仍然遇到錯誤,說“您的查詢不包括指定的運算式‘GL Type’作為聚合函式的一部分”或者說每個欄位都沒有包含在 group by 子句中
SELECT RS_PCL.[GL Type],
RS_PCL.SKU,
RS_PCL.[SKU Desc],
RS_PCL.Supplier,
RS_PCL.[Case UPC],
RS_PCL.[Pack UPC],
RS_PCL.[Unit UPC],
RS_PCL.PDCN,
RS_PCL.Package,
RS_PCL.[Price Start Date],
RS_PCL.[Price End Date],
Iif( RS_PCL.PRICELINE = "J" , RS_PCL.Price , Null) AS [Sell Price],
Iif( RS_PCL.PRICELINE = "R" , RS_PCL.Price , Null) AS [Retail Price],
RS_PCL.Cost,
RS_PCL.Tax,
RS_PCL.Freight
FROM RS_PCL
WHERE (RS_PCL.PRICELINE IN ("J","R"))
測驗了下面列出的自聯接查詢,我不斷收到此查詢的“FROM 子句中的語法錯誤”。
SELECT J.*, R.R_PRICE FROM RS_PCL AS J
INNER JOIN SELECT (RS_PCL.SKU, RS_PCL.[Price Start Date], RS_PCL.Price AS R_PRICE FROM RS_PCL WHERE RS_PCL.PRICELINE = "R") AS R
ON J.SKU = R.SKU AND J.[Price Start Date] = R.[Price Start Date]
WHERE RS_PCL.Priceline = "J"
uj5u.com熱心網友回復:
SELECT CASE 在 Access 查詢中不起作用。使用 IIf() 或 Switch() 或 Choose()。
也許是 CROSSTAB 查詢或使用運算式模擬 CROSSTAB 來創建欄位。假設,如問題標題所示,每個資料組合有一個“J”和一個“R”記錄:
SELECT SKU, SKU_DESC, PACKAGE, STD, END,
Max(IIf(PRICELINE = "J", PRICE, Null)) AS J,
Max(IIf(PRICELINE = "R", PRICE, Null)) AS R
FROM RS_PCL
GROUP BY SKU, SKU_DESC, PACKAGE, STD, END
或者自連接,假設只有需要作為唯一識別符號的欄位是 SKU 和 STD:
SELECT J.*, R.R_PRICE FROM RS_PCL AS J
INNER JOIN (SELECT SKU, STD, PRICE AS R_PRICE FROM RS_PCL WHERE PRICELINE = "R") AS R
ON J.SKU = R.SKU AND J.STD = R.STD
WHERE PRICELINE = "J";
這對報告很有用,但對資料輸入表單沒用。
另一種方法是使用 DLookup() 域聚合函式。域聚合函式可能會導致查詢或表單性能下降,但資料集是可編輯的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/535581.html
