大家好,
我的数据库中有三个表格,分别是Stockin,Stockout和Products。下面是它们的详细架构。
和缺货如下:
现在的问题是,当我尝试使用以下SQL查询时,一切都很好(就计算而言):
But when I update my Query to include the 缺货表 in JOIN then the calculation is terribly wrong as the sum is calculated for each time there is an occurrence of an item in stockout 表。 Any solution or fixes? Below is erroneous calculation (or JOIN).
例如,第一个SQL语句以SUM返回6025的值是正确的,但是第二个语句将该值跳转到72300,这是非常不正确的。
我的数据库中有三个表格,分别是Stockin,Stockout和Products。下面是它们的详细架构。
Products:
CREATE TABLE [dbo].[Products](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Prod_ID] [varchar](10) NOT NULL,
[Prod_Name] [varchar](150) NOT NULL,
[Re_Order] [float] NOT NULL,
PRIMARY KEY CLUSTERED
Stockin:
CREATE TABLE [dbo].[StockinTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NOT NULL,
[Sup_ID] [varchar](10) NOT NULL,
[Sup_Name] [varchar](50) NOT NULL,
[Prod_ID] [varchar](10) NOT NULL,
[Prod_Name] [varchar](100) NOT NULL,
[Expiry] [date] NOT NULL,
[Units] [float] NOT NULL,
[Cost] [float] NOT NULL,
PRIMARY KEY CLUSTERED
和缺货如下:
Stockout:
CREATE TABLE [dbo].[StockoutTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NOT NULL,
[Invoice] [varchar](12) NOT NULL,
[Cust_Name] [varchar](150) NOT NULL,
[Prod_ID] [varchar](10) NOT NULL,
[Prod_Name] [varchar](150) NOT NULL,
[Boxes] [float] NOT NULL,
[Pcs] [float] NOT NULL,
[Price] [float] NOT NULL,
PRIMARY KEY CLUSTERED
现在的问题是,当我尝试使用以下SQL查询时,一切都很好(就计算而言):
首先选择-加入-分组依据:
SELECT pr.Prod_ID, pr.Prod_Name, sum(sin.Units) as [Units] FROM 产品展示 as pr
JOIN 库存表 AS sin ON (pr.Prod_Name = sin.Prod_Name)
WHERE pr.Prod_Name = 'CIPOLE FRESCO 5KG'
But when I update my Query to include the 缺货表 in JOIN then the calculation is terribly wrong as the sum is calculated for each time there is an occurrence of an item in stockout 表。 Any solution or fixes? Below is erroneous calculation (or JOIN).
第二个SELECT-JOIN-GROUP BY(错误的一个):
SELECT pr.Prod_ID, pr.Prod_Name, sum(sin.Units) as [Units] FROM 产品展示 as pr
JOIN 库存表 AS sin ON (pr.Prod_Name = sin.Prod_Name)
JOIN 缺货表 AS sout ON (pr.Prod_Name = sout.Prod_Name)
WHERE pr.Prod_Name = 'CIPOLE FRESCO 5KG'
GROUP BY pr.Prod_ID, pr.Prod_Name
例如,第一个SQL语句以SUM返回6025的值是正确的,但是第二个语句将该值跳转到72300,这是非常不正确的。