【发布时间】:2017-06-21 12:22:05
【问题描述】:
我是 Oracle 的新手,可能在这里使用了错误的方法。
当前结果:
预期结果:
问题在于,在我的例子中,每个 ID 的文本“项目”而不是第一个项目而不是出现在其上方。
我的查询(简体):
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
/* ... */
注意:以上截图中的总价只是一个占位符来解释内容,它只是一个总金额。
有人可以告诉我我在这里做错了什么吗?
非常感谢您的帮助,
迈克
【问题讨论】:
-
去掉单引号。您定义了一个字符串,而不是列引用。
-
@GordonLinoff:谢谢,戈登。我想要每个 ID 的第一行的实际字符串和其他行的列值。我添加了屏幕截图来解释我的意思。这有意义吗?
标签: sql oracle select case partition