我想写一个查询,为我带来今天的销售。我在数据库中使用了4个表。
对于一种药物,可能是多行,每个有效期不同,我想得到今天出售的每种药物的数量总和。
这里是我正在使用的查询,但它给了我错误的数字:
Select TOP 1* from tblAssignment
group by SkillNeeded
having SkillNeeded <= 4
order by desc;
答案 0 :(得分:1)
一天的销售额来自清单
中的表2和表3输出它包含销售ID和日期
outputdetails包含特定销售中销售的药物
但是您没有在这些表中找到足够的列来启用完整的查询。
Select ...
From Output
inner join OutputDetails on OutputDetails.OutputID = Output.ID
Group by ...
你还可以包括第一张表&#34; drug&#34;在查询中,但我们还不知道。
在您下面的第一条评论之后,如果您确实需要将销售和库存信息合并到一个结果中,您需要单独汇总销售和库存,然后将这些信息加入药品表中的常见信息。 您的问题中的表格没有足够的详细信息,因此以下仅作为指南提供。必须有一些方法明确地将药物加入销售数据(即它不能是药物和产出之间的交叉联接)。
SELECT
Drugs.ID
, Drugs.Name
, r.Stock
, s.sales
FROM Drugs
LEFT JOIN (
SELECT
DrugID
, SUM(InputDetails.Quantity) AS 'Stock'
FROM InputDetails
GROUP BY
DrugID
) r ON Drugs.ID = r.DrugID
LEFT JOIN (
SELECT
output.DrugID
, SUM(OutputDetails.Quantity) AS 'Sales'
FROM Output
INNER JOIN OutputDetails ON OutputDetails.OutputID = Output.ID
GROUP BY
output.DrugID
) o ON Drugs.ID = o.DrugID