【问题标题】:How to separate a record to get the amount如何分隔记录以获取金额
【发布时间】:2014-11-27 04:18:23
【问题描述】:

我总共有 160 个库存。

如何获取前100个总量和后60个总量?

表格按日期和股票 ID 排序。

tblStock
+----------+------------+----------+----------+------------+
+ Stock ID + Product ID + Quantity + Amount   + Date       +
+----------+------------+----------+----------+------------+
+        1 +       1001 +       50 +    10.00 + 2014-11-10 +
+----------+------------+----------+----------+------------+
+        2 +       1001 +       70 +    11.00 + 2014-11-11 +
+----------+------------+----------+----------+------------+
+        3 +       1001 +       30 +     9.90 + 2014-11-12 +
+----------+------------+----------+----------+------------+
+        4 +       1001 +       10 +    10.20 + 2014-11-13 +
+----------+------------+----------+----------+------------+

我需要下面的两个结果。谢谢

Result A (first 100 quantity)
+------------+----------+--------------+
+ Product ID + Quantity + Total Amount +
+------------+----------+--------------+
+       1001 +      100 +      1050.00 +
+------------+----------+--------------+

Result B (last 60 quantity)
+------------+----------+--------------+
+ Product ID + Quantity + Total Amount +
+------------+----------+--------------+
+       1001 +       60 +       619.00 +
+------------+----------+--------------+

【问题讨论】:

  • 您希望结果为 100-19.90 和 60-20.20 吗??
  • 发布样本结果
  • 我想要一个结果 A = ((50 x 10) + (50 x 11)) ,结果 B = ((20 x 10) + (30 x 9.90) + (10 x 10.20)) ,结果 A 是前 100 个数量,结果 B 是最后 60 个数量。谢谢

标签: mysql stock


【解决方案1】:

前 100 名

选择Product ID, sum(Quantity) 作为Quantity, sum(Amount) 作为TotalAmount from (SELECT * from tblstock order by tblStock.Stock ID ASC 限制 100) t1 GROUP BY Date,Product ID

最后 60 个

select Product ID, sum(Quantity) as Quantity, sum(Amount) as Total Amount from (SELECT * from tblstock order by tblStock.Stock ID DESC 限制 60) t1 GROUP BY Date,Product ID

【讨论】:

  • 对不起,这不是我想要的结果,我的结果请求没有记录限制,是库存数量限制。谢谢
【解决方案2】:

试试这个:

结果 A:

SELECT A.ProductID AS 'Product ID', '100' AS 'Quantity', SUM(A.Amount) as 'Total Amount'
FROM tblStock A
WHERE StockID IN (SELECT B.StockID from tblStock B ORDER BY B.StockID ASC LIMIT 100)

结果 B

SELECT A.ProductID AS 'Product ID', '60' AS 'Quantity', SUM(A.Amount) as 'Total Amount'
FROM tblStock A
WHERE StockID IN (SELECT B.StockID from tblStock B ORDER BY B.StockID DESC LIMIT 60)

您可以使用 JOIN,而不是使用 IN。

结果 A:

SELECT A.ProductID AS 'Product ID', '100' AS 'Quantity', SUM(A.Amount) AS 'Total Amount'
FROM tblStock AS A
INNER JOIN
 (SELECT StockID from tblStock ORDER BY StockID ASC LIMIT 100) AS B
ON A.StockID = B.StockID

结果 B

SELECT A.ProductID AS 'Product ID', '60' AS 'Quantity', SUM(A.Amount) AS 'Total Amount'
FROM tblStock AS A
INNER JOIN
 (SELECT StockID from tblStock ORDER BY StockID DESC LIMIT 60) AS B
ON A.StockID = B.StockID

【讨论】:

  • 我收到此错误 #1235 - 此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”。谢谢
  • 现在我已经更新了查询。请试一试。谢谢。
  • 嗨,我已经测试过了,但结果 Total Amount 输出是 41.09。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2012-12-05
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多