我目前有一個非常簡單的 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"))
測驗了下面列出的 Self Join 查詢,我在這個查詢中不斷收到“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/ruanti/529812.html
上一篇:如何連接兩個具有多個條件的表?