首页 > 解决方案 > 是否可以在 PS 查询表达式中使用 FROM?如果没有,是否有替代解决方案?

问题描述

我是 PS Query 和 SQL 的新手。我有一个有效的 SQL,但是我无法将其转换为 PS Query。

所以基本上,我想介绍我的产品及其每列数量的比较。

这是我的示例数据:

Product | Month | Amount
--------|-------|-------
Phone   | 2     | 25 
Laptop  | 2     | 30 
Phone   | 1     | 20 
Laptop  | 1     | 40    

下面是我很难翻译成 PS Query 的代码:

Select ….
  SUM(CASE WHEN Product1 <> Product2 AND Product2 = Laptop THEN 30
/*On my second statement, when the product are equal, i need to get the amount on the previous month.*/
           WHEN Product1 = Product3 AND Product3 = Phone 
           THEN (SELECT Amount
                  FROM FINAL_TBL B
                  WHERE B.PERIOD = A.PERIOD - 1)
              ELSE 0
       END) AS Amount

From FINAL_TBL FTBL A
Where <Conditions>

我的预期输出应该是

Product1    | Amount1   | Product2  | Amount2   | Product3  | Amount3
------------|-----------|-----------|-----------|-----------|--------
Phone       | 25        | Laptop    | 30        | Phone     | 20

标签: peoplesoft

解决方案


您不能FROM在 PSQUERY 表达式中添加 a。

您尝试翻译的查询可以重写为:

Select *
  SUM(CASE WHEN Product1 <> Product2 AND Product2 = Laptop 
                THEN 30
           WHEN Product1 = Product3 AND Product3 = Phone 
                THEN B.Amount
           ELSE 0
       END) AS Amount
FROM FINAL_TBL A, FINAL_TBL B
WHERE B.PERIOD = A.PERIOD - 1
AND <Conditions>

但是这个或原始查询都不会导致您期望的输出。您正在寻找的是PIVOT子句。


推荐阅读