SQL构造错误
表:项目 --------------------------------------- Item_ID Description --------------------------------------- 1 Vivel Satin Soap 2 Flake 3 Maggie 4 Mango Juice --------------------------------------- 我在按照我想要的方式构造SQL查询时遇到了问题。。。。这里,我有两个 数据库中的表,如上图所示。项目表用于项目的说明查找 和用于查找项目销售记录的销售表。现在,我的要求是,我想选择一个记录 从两个表生成报告,如下所示。报告应包含 项目描述及其对应的数量总和 REPORT ------------------------------------------------------ Item_ID Description Total_Quantity ------------------------------------------------------ 1 Vivel Satin Soap 4 2 Flake 3 3 Maggie 1 4 Mango Juice (SHOULD BE NULL HERE) ------------------------------------------------------ 我尝试按照SQL查询和其他一些方法生成报告,但出现了一个逻辑错误。。。。 所以,请帮助我更好地构建 1) SELECT I.Item_ID, I.Description, Sum(S.Quantity) FROM ITEMS I INNER JOIN SALES S ON I.Item_ID = S.Item_ID ORDER BY I.Item_ID; 2) Select I.Item_ID, I.Description, Sum(S.Quantity) From ITEMS I, SALES S Where S.Item_ID IN (Select Item_ID from ITEMS) Order by I.Item_ID; 3) etc.......... 试试这个SQL构造错误,sql,sql-server,sql-server-2008,ms-access,ms-access-2007,Sql,Sql Server,Sql Server 2008,Ms Access,Ms Access 2007,表:项目 --------------------------------------- Item_ID Description --------------------------------------- 1 Vivel Satin Soap 2 Flake 3 Maggie 4 Mango Juice --------------------------------------- 我在按照我想要的方式构
SELECT I.Description, Sum(S.Quantity)
FROM ITEMS I
LEFT JOIN SALES S ON I.Item_ID = S.Item_ID
GROUP BY I.Description
而不是内部只是尝试与左连接。。。 您需要使用GROUPBY子句
SELECT I.Item_ID, I.Description, Sum(S.Quantity) -- It will return Null for Mango Juice
FROM ITEMS I
LEFT JOIN SALES S ON I.Item_ID = S.Item_ID
Group By I.Item_ID, I.Description
ORDER BY I.Item_ID;
或:
SELECT I.Item_ID, I.Description, Sum(S.Quantity) -- It will return Null for Mango Juice
FROM ITEMS I
LEFT JOIN SALES S ON I.Item_ID = S.Item_ID
Group By I.Item_ID, I.Description
ORDER BY I.Item_ID;
SELECT I.Item_ID, I.Description, CASE WHEN Sum(S.Quantity) IS NULL THEN 0 ELSE Sum(S.Quantity) END Quantity -- It will return 0 for Mango Juice
FROM ITEMS I
LEFT JOIN SALES S ON I.Item_ID = S.Item_ID
Group By I.Item_ID, I.Description
ORDER BY I.Item_ID;