我无法概念化如何使用SQL专门执行此操作。
假设我有一个查询可能是解决此问题的子查询产生的:
Color | Count
Brown | 25
Yellow | 5
Blue | 35
使用上面的结果集,我想要一个包含以下内容的查询:
Color
Brown
Brown
Brown
Yellow
Blue
Blue
Blue
Blue
另一种解决方案是采取计数并执行以下操作:
SELECT -Int((-Count(*)/10)) AS Expr1, Color
FROM ColorTable
group by test.Source_City
其中,使用上述数据会产生:
Color | Count
Brown | 3
Yellow | 1
Blue | 4
对此的解决方案是获取Count并为每个1写一行。
答案 0 :(得分:2)
因此,我们将测试数据放在名为[InitialCounts]
的表中Color Count
------ -----
Blue 35
Brown 25
Yellow 5
和名为[Numbers]的“数字表”包含
n
----
1
2
3
...
9999
(或根据我们希望为每种颜色推导出的最大行数,根据需要进行调整)。
查询
SELECT
Color,
Int(CDbl(Count)/10 + 0.5) AS NewCount
FROM InitialCounts
返回
Color NewCount
------ --------
Blue 4
Brown 3
Yellow 1
如果我们想为每种颜色生成重复的行,我们可以做到
SELECT NewCounts.Color
FROM
Numbers,
(
SELECT
Color,
Int(CDbl(Count)/10 + 0.5) AS NewCount
FROM InitialCounts
) AS NewCounts
WHERE Numbers.n <= NewCounts.NewCount
ORDER BY NewCounts.Color
返回
Color
------
Blue
Blue
Blue
Blue
Brown
Brown
Brown
Yellow