グループ化されたデータの最初の行を返すクエリを作成しています。私はBY句PARTITIONにわたって使用してみましたが、どういうわけか、私は、所望の結果が届かない:ORACLEデータセットの最初の行を返すクエリ
select row_number() OVER(PARTITION BY leafv , value_group , l1d ,l2d ,l3d ,l4d ,l5d ,l6d ,l7d
order by leafv , value_group , l1d ,l2d ,l3d ,l4d ,l5d ,l6d ,l7d
) MYROWNUM ,
S.*
from
(SELECT
NVL(CASE
WHEN (SELECT parameter_value
FROM V_CONFIG_PARAMETERS
WHERE rownum = 1
AND parameter_name = 'MOMENT_ITEM_NUMBER_TYPE') = 'S'
THEN sku
WHEN (SELECT parameter_value
FROM V_CONFIG_PARAMETERS
WHERE rownum = 1
AND parameter_name = 'MOMENT_ITEM_NUMBER_TYPE') = 'U'
THEN upc
WHEN (SELECT parameter_value
FROM V_CONFIG_PARAMETERS
WHERE rownum = 1
AND parameter_name = 'MOMENT_ITEM_NUMBER_TYPE') = 'C'
THEN CUSTOM_PRODUCT_CODE
END,'NULLVALUE') leafv,
nvl(chain_name,'NULLVALUE') value_group,
nvl(level_10_description ,'NULLVALUE') l10d,
nvl(level_1_description,'NULLVALUE') l1d,
nvl(level_2_description,'NULLVALUE') l2d,
nvl(level_3_description,'NULLVALUE') l3d,
nvl(level_4_description,'NULLVALUE') l4d,
nvl(level_5_description,'NULLVALUE') l5d,
nvl(level_6_description,'NULLVALUE') l6d,
nvl(level_7_description,'NULLVALUE') l7d,
nvl(level_8_description,'NULLVALUE') l8d,
nvl(level_9_description,'NULLVALUE') l9d
FROM t_product_catalog_flat
order by leafv , value_group , l1d ,l2d ,l3d ,l4d ,l5d ,l6d ,l7d ,l8d ,l9d ,l10d) S
order by MYROWNUM
予期される結果:列のグループについて同じ値を有するデータの各セットのため 1行(leafv、value_group、 l1d、l2d、l3d、l4d、l5d、l6d、l7d、l8d、l9d、l10d)
しかし、私は奇妙な結果を得ています。 可能な解決策を提案してください。
これらすべてのROWNUM = 1つのフィルタだけで、対応するテーブルから1(ランダム!)行を返します 。次に、ROW_NUMBER()OVER(....)が内側のクエリになければなりません。外側のクエリは、WHERE RN = 1フィルタのみを持つ必要があります。 – mathguy
お返事ありがとうございます。あなたの提案にもう少し拡大してください。 – Pradeep