SQL Server选择加入

SQL Server选择加入,sql,sql-server,sql-server-2008,join,Sql,Sql Server,Sql Server 2008,Join,我正在使用两张桌子: 包含代码(主键)、可用数量和位置字段的库存 发票历史记录,包含发票编号、项目代码(与上面的代码相对应)和销售数量字段 我需要生成一个报告,其中包括该项目的代码,该项目已购买的次数,在库存和位置可用的数量 到目前为止,我一直在尝试这个 SELECT CODE, SALES, QTY_AVAILABLE, LOCATION FROM INVENTORY JOIN ( SELECT ITEMCODE, SUM(QTY_SOLD) AS SALES, FROM INVOICE

我正在使用两张桌子:

  • 包含代码(主键)、可用数量和位置字段的库存
  • 发票历史记录,包含发票编号、项目代码(与上面的代码相对应)和销售数量字段
我需要生成一个报告,其中包括该项目的代码,该项目已购买的次数,在库存和位置可用的数量

到目前为止,我一直在尝试这个

SELECT CODE, SALES, QTY_AVAILABLE, LOCATION
FROM INVENTORY JOIN 
(
SELECT ITEMCODE, SUM(QTY_SOLD) AS SALES,
FROM INVOICE_HISTORY 
GROUP BY ITEMCODE
)
ON (CODE = ITEMCODE))
但它不起作用。有人能帮我理解我做错了什么吗

谢谢。

试试这个

SELECT CODE, SALES, QTY_AVAILABLE, LOCATION
FROM INVENTORY Inv INNER JOIN INVENTORY INVOICE_HISTORY InvHis 
on Inv.CODE = InvHis.ITEMCODE
试试这个

SELECT CODE, SALES, QTY_AVAILABLE, LOCATION
FROM INVENTORY Inv INNER JOIN INVENTORY INVOICE_HISTORY InvHis 
on Inv.CODE = InvHis.ITEMCODE

实际上,您不需要在join中写出整个sub-select语句。您需要为表名使用别名,然后只需选择以别名为前缀的所需列。它将是这样的:

SELECT INV.CODE, INV.SALES, INV.QTY_AVAILABLE, INV.LOCATION, HIS.ITEMCODE, HIS.SUM(QUANTITY) AS SALES 
FROM INVENTORY AS INV JOIN INVOICE_HISTORY AS HIS ON INV.CODE = HIS.ITEMCODE
关键是,您给库存表一个INV别名,给发票历史记录表一个HIS别名,然后在同一select语句中引用这两个别名


希望有帮助

实际上,您不需要在join中写出整个sub-select语句。您需要为表名使用别名,然后只需选择以别名为前缀的所需列。它将是这样的:

SELECT INV.CODE, INV.SALES, INV.QTY_AVAILABLE, INV.LOCATION, HIS.ITEMCODE, HIS.SUM(QUANTITY) AS SALES 
FROM INVENTORY AS INV JOIN INVOICE_HISTORY AS HIS ON INV.CODE = HIS.ITEMCODE
关键是,您给库存表一个INV别名,给发票历史记录表一个HIS别名,然后在同一select语句中引用这两个别名

希望有帮助

试试这个

SELECT i.CODE, SUM(QTY_SOLD) SALES, i.QTY_AVAILABLE, i.LOCATION
FROM INVENTORY i
    JOIN INVOICE_HISTORY ih ON i.CODE = ih.ITEMCODE
GROUP BY i.CODE, i.QTY_AVAILABLE, i.LOCATION
试试这个

SELECT i.CODE, SUM(QTY_SOLD) SALES, i.QTY_AVAILABLE, i.LOCATION
FROM INVENTORY i
    JOIN INVOICE_HISTORY ih ON i.CODE = ih.ITEMCODE
GROUP BY i.CODE, i.QTY_AVAILABLE, i.LOCATION