Crystal报表 - 单列中的2个逻辑

时间:2018-04-10 06:05:19

标签: sql-server-2008

我们在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

请给我们一些建议,如果有的话。

1 个答案:

答案 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';

enter image description here

Demo