【发布时间】:2014-03-01 13:18:04
【问题描述】:
我有三个表 PurchaseDetails、SalesDetails 和 ProductMaster。 我有一个产品在那里 master P0001
如何在sql2008中加入这个表来获取损益报告
我写了这段代码我不明白为什么它显示了四次......
SELECT PM.product_id,
PM.product_name,
PM.company_name,
PM.opening_stock,
(SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
FROM Purchase_Order_Details) AS [Purchase Stock ],
CAST(CONVERT(decimal(18, 0), PM.opening_stock) +
(SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
FROM Purchase_Order_Details AS Purchase_Order_Details_1) AS decimal(18, 0)) AS [Total Purchase Stock],
CAST(CONVERT(decimal(18, 2), PM.opening_stock) * CONVERT(decimal(18, 2), PM.rate) + CONVERT(decimal(18, 2), PO.net_amount) AS decimal(18, 2)) AS [Total Purchase Cost],
(SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
FROM Order_Details) AS [Sales Stock ], PM.closing_stock AS [Closing Stock], O.net_amount AS [Sales Cost]
FROM Purchase_Order_Details AS POD
INNER JOIN Purchase_Order AS PO ON POD.pdoc_id = PO.pdoc_id
INNER JOIN Product_Master AS PM
INNER JOIN Order_Details AS OD ON PM.product_id = OD.product_id
INNER JOIN Ordered AS O ON OD.doc_id = O.doc_id ON POD.product_id = PM.product_id
输出
谁能解决这个问题?
【问题讨论】:
-
基本 SQL 调试 - 将您的
SELECT子句更改为SELECT *,然后使用您的眼球找出哪些列实际包含不同的数据。这应该会通知您哪些JOINs 正在生成多行。
标签: sql sql-server sql-server-2008 sql-server-2008-r2 inner-join