【发布时间】:2016-12-04 15:52:00
【问题描述】:
在 Essence 中,我需要将两个表(采购和销售)连接在一起。两个表都有不同的主键,但它们共享相同的外键。每次购买时,都会创建一个新条目(使用它自己的主键)。每次进行销售时,都会创建一个新条目(使用自己的密钥)。
使用过的表格总结:
Purchase Data
Individual Product Cost (AS IPC)
Sales Tax (AS ST)
Quantity (AS Q)
SKU (Foreign Key)
Primary Key (AS PK)
Sales
Amount Sold (AS AS)
Total (AS T)
SSKU(Foreign Key)
Primary Key (AS PK)
当我尝试根据产品对数据进行求和和连接时,我得到了奇怪的结果。
采购表数据:
SKU | IPC | ST | Q | PK
1 2.40 .02 5 1
2 5.00 .05 20 2
3 4.00 .04 5 3
1 5.00 .04 20 4
销售表:
SSKU | T | AS | PK
1 10 2 1
2 9 1 2
3 9 4 3
1 9 1 4
2 9 2 5
1 9 2 6
1 9 4 7
预期结果
SKU | (IPC + ST)Q | Q | SUM AS | SUM T
1 354.9 25 9 37
2 101 20 3 9
3 80.8 5 4 18
在 OpenOffice Base 中尝试脚本创建器时,它会给我产品 3 的预期结果,但产品 1 和 2 会出错。
我阅读了 SQL 编程,并尝试了它。我认为这可以通过在合并之前分别对两个表求和来解决问题。相反,我现在一直收到错误消息,但我找不到错误。
当前代码:
SELECT
"A"."SKU"
,SUM(( "A"."Individual Product Cost" + "A"."Sales Tax" ) * "A"."Quantity")
,"A"."Quantity"
,"D"."Sales"
,"D"."Sold"
FROM "PurchaseData" AS "A"
Inner Join
(
Select
"ACT"."SSKU"
,SUM("ACT"."Amount Sold") AS Sold
,SUM("ACT"."Total") AS Sales
From
"Sales" AS ACT
GROUP BY
"ACT"."SSKU"
)
AS D
on "A"."SKU" = "D"."SSKU"
Group By
"A"."SKU"
编辑: 根据随机在线语法检查器,它是第 3 行(我没看到)。 根据 Openoffice 基地:
SQL 状态:HY000 错误代码:1000
语法错误,意外 $end,期待 BETWEEN 或 IN 或 SQL_TOKEN_LIKE
【问题讨论】:
-
错误是什么?
-
根据随机的语法检查器,它在第 3 行。根据 OpenOffice Base:SQL 表达式中的语法错误 SQL 状态:HY000 错误代码:1000 SQL 表达式中的语法错误 SQL 状态:HY000 错误代码: 1000 语法错误,意外 $end,期望 BETWEEN 或 IN 或 SQL_TOKEN_LIKE
-
您可以在子查询中汇总购买数据,就像您对销售所做的一样,然后将两个子查询加入而不聚合
-
我已经把它放在一个答案中,所以你可以接受它
标签: sql