我有一个数据库“仓库”,包括每日库存记录表,每天一张表。
现在,我需要检查库存水平的历史变化。根据特定标准,输出将打印每天的库存。
我不确定如何描述它,所以我创建了一个简化的模式样本,它的表和预期的输出。
架构“仓库”有一个表列表:
每个表包含产品ID和库存的相同列,下面是表101
对于每个表,我需要进行查询: 从[table name]中选择count(*)作为num_of_product_with_inventory。从每个表中得到查询结果后,我应该有如下所示的输出:
任何人都可以告诉我查询应该如何获得最终输出吗?我只知道基本的查询,并且不知道如何把它们放在一起。谢谢!
答案 0 :(得分:0)
您拥有的数据模型正在使您的工作更加努力。 如果必须保留它,则需要使用存储过程或在代码中进行循环(而不是在sql中)。
但你应该做的是改变数据模型。 根本不建议每天创建一个表格!
它是 DATA 与 METADATA 的混合体。表结构应表示您存储的不同类型的数据,而您在日期X与日期Y上具有不同库存的事实应该在您的数据中。
因此,建议您创建一个包含date
,product_id
和warehouse_inventory
列的表格。如果它太大,您可以按日期(周/月/ ..)对其进行分区。然后,您可以使用以下内容轻松获取数据:
SELECT date, count(*) AS num_of_products_with_inventory
FROM daily_inventory i
WHERE i.date BETWEEN '<some date>' and '<some date>'
GROUP BY date