我是Oracle新手,也许在这里使用错误的方法。
当前结果:
预期结果:
问题在于,在我的情况下,每个ID而不是在其上方的文本“Items”而不是第一个项。
我的查询(简化):
SELECT
CASE
WHEN ROW_NUMBER() OVER (PARTITION BY sd.ID ORDER BY sd.ITEM) = 1 THEN sd.ID
ELSE ''
END AS ID
, CASE
WHEN ROW_NUMBER() OVER (PARTITION BY sd.ID ORDER BY sd.ITEM) = 1 THEN 'Items'
ELSE sd.ITEM
END AS Details
, CASE
WHEN ROW_NUMBER() OVER (PARTITION BY sd.ID ORDER BY sd.ITEM) = 1 THEN TO_CHAR((sd.SUBTOTAL + sd.SUBTOTAL_TAX), 'FM9,990.00')
ELSE ''
END AS Total_Price
FROM
SHIP_DETAILS sd
/* ... */
注意:上面屏幕截图中的总价格只是占位符来解释内容,它只是一笔金额。
有人能告诉我这里做错了什么吗?
非常感谢您的任何帮助,
麦克
答案 0 :(得分:1)
评论太长了。
case
语句不会生成新行。因此,您可以选择'item'
或第一项。
我怀疑您要使用grouping sets
(或with rollup
)。这是解释这些group by
修饰符的article。