我有一个输出地址订单数据的查询:
SELECT ordernumber
, article_description
, article_size_description
, concat(NumberPerBox,' pieces') as contents
, NumberOrdered
FROM customerorder
WHERE customerorder.id = 1;
我希望上面的行输出NumberOrders
(例如50,000)除以NumberPerBox
,例如2,000 = 25次。
是否有一个可以执行此操作的SQL查询,我不反对使用临时表加入,如果这就是它。
我检查了以前的问题,但最近的问题是:
is to be posible in mysql repeat the same result
只提供给出固定行数的答案,我需要它是动态的,具体取决于(NumberOrdered div NumberPerBox
)的值。
我想要的结果是:
Boxnr Ordernr as_description contents NumberOrdered
------+--------------+----------------+-----------+---------------
1 | CORDO1245 | Carrying bags | 2,000 pcs | 50,000
2 | CORDO1245 | Carrying bags | 2,000 pcs | 50,000
....
25 | CORDO1245 | Carrying bags | 2,000 pcs | 50,000
答案 0 :(得分:1)
首先,我要说我对SQL Server比较熟悉,所以我的回答有点偏差 其次,我没有测试我的代码示例,它应该可以作为参考点来开始。
在我看来,这种情况是数字表的主要候选者。简单地说,它是一个表(通常称为“数字”),它只不过是从1到n的单个PK整数列。一旦你使用了Numbers表并知道它是如何使用的,你就会开始找到它的许多用途 - 比如查询时间间隔,字符串拆分等等。
那就是说,这是我对你的问题未经测试的回复:
SELECT
IV.number as Boxnr
,ordernumber
,article_description
,article_size_description
,concat(NumberPerBox,' pieces') as contents
,NumberOrdered
FROM
customerorder
INNER JOIN (
SELECT
Numbers.number
,customerorder.ordernumber
,customerorder.NumberPerBox
FROM
Numbers
INNER JOIN customerorder
ON Numbers.number BETWEEN 1 AND customerorder.NumberOrdered / customerorder.NumberPerBox
WHERE
customerorder.id = 1
) AS IV
ON customerorder.ordernumber = IV.ordernumber
正如我所说,我的大多数经验都在SQL Server中。我引用http://www.sqlservercentral.com/articles/Advanced+Querying/2547/(需要注册)。但是,当我搜索“SQL数字表”时,似乎有相当多的可用资源。