我们在Crystal报告中要求我们必须在一列中实现2个概念。 例如:在下面的截图中, 如果我们有数字,我们需要总结并显示为一行。 如果是可变行。它应该保持为单行。
Material Quantity Price
O Ring 1 5.61
O Ring 1 Fixed
O Ring 1 5.61
O Ring 1 Fixed
输出应该是,
Material Quantity Price
O Ring 1 11.22
O Ring 1 Fixed
O Ring 1 Fixed
请给我们一些建议,如果有的话。
答案 0 :(得分:1)
首先请注意,您当前的表设计存在很大缺陷,因为您尝试将数字和文本信息存储在同一Price
列中,两者都作为文本。这意味着要总结任何价格,我们必须转换为数字,然后再次转回文本以报告其他文本的值。 不在Price
列中存储文本,并使该列数字化会更好。
话虽如此,以下查询似乎可以满足您的需求:
SELECT
Material, MAX(Quantity) AS Quantity,
CAST(SUM(CAST(Price AS numeric(9,2))) AS varchar(15)) AS Price
FROM yourTable
WHERE Price <> 'Fixed'
GROUP BY Material
UNION ALL
SELECT Material, Quantity, Price
FROM yourTable
WHERE Price = 'Fixed';