在oracle中将动态值传递给订单记录
我想按以下方式对记录进行排序在oracle中将动态值传递给订单记录,oracle,Oracle,我想按以下方式对记录进行排序 按组排列记录(按ID列) 按升序(按名称列)对步骤1结果排序 2.1。如果名称列具有相同的值,则按标志列值排序(升序) 按顺序辅助列对步骤2的结果进行排序(我将使用顺序辅助列传递动态值进行排序) 我的查询: SELECT IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST FROM DUMMY_SORT WHERE METHOD_ID = '1' GROUP BY (IDENTIFIER, CODE, INC_EXC_FLAG,
SELECT IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST FROM DUMMY_SORT
WHERE METHOD_ID = '1'
GROUP BY (IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST)
ORDER BY ORDER_ASSIST ASC, CODE ASC, INC_EXC_FLAG ASC
ID NAME FLAG ORDER_ASSIST
A_EC AEC 0 EC1
B_EC_DET BEC 1 EC2
A_NIT ANIT 0 NIT1
A_NIT ANIT 1 NIT1
A_NIT BNIT 0 NIT1
B_NIT_DET BNIT 0 NIT2
B_NIT_DET BNIT 1 NIT2
A_SC ASC 0 SC1
A_SC ASC 1 SC1
B_SC_DET BSC 0 SC2
B_SC_DET BSC 1 SC2
C_SC_FUN CSC 0 SC3
D_SC_GRP DSC 0 SC4
以上查询结果:
SELECT IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST FROM DUMMY_SORT
WHERE METHOD_ID = '1'
GROUP BY (IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST)
ORDER BY ORDER_ASSIST ASC, CODE ASC, INC_EXC_FLAG ASC
ID NAME FLAG ORDER_ASSIST
A_EC AEC 0 EC1
B_EC_DET BEC 1 EC2
A_NIT ANIT 0 NIT1
A_NIT ANIT 1 NIT1
A_NIT BNIT 0 NIT1
B_NIT_DET BNIT 0 NIT2
B_NIT_DET BNIT 1 NIT2
A_SC ASC 0 SC1
A_SC ASC 1 SC1
B_SC_DET BSC 0 SC2
B_SC_DET BSC 1 SC2
C_SC_FUN CSC 0 SC3
D_SC_GRP DSC 0 SC4
但我想根据order_assist的动态值生成结果
例如:
SELECT IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST FROM DUMMY_SORT
WHERE METHOD_ID = '1'
GROUP BY (IDENTIFIER, CODE, INC_EXC_FLAG,ORDER_ASSIST)
ORDER BY ORDER_ASSIST ASC, CODE ASC, INC_EXC_FLAG ASC
ID NAME FLAG ORDER_ASSIST
A_EC AEC 0 EC1
B_EC_DET BEC 1 EC2
A_NIT ANIT 0 NIT1
A_NIT ANIT 1 NIT1
A_NIT BNIT 0 NIT1
B_NIT_DET BNIT 0 NIT2
B_NIT_DET BNIT 1 NIT2
A_SC ASC 0 SC1
A_SC ASC 1 SC1
B_SC_DET BSC 0 SC2
B_SC_DET BSC 1 SC2
C_SC_FUN CSC 0 SC3
D_SC_GRP DSC 0 SC4
如果我将动态值作为“SC”传递,我希望首先对记录SC1、SC2、SC3进行排序。然后是NIT1,NIT2。然后EC1,EC2。
如果我将动态值作为“NITG”传递,我希望首先对记录NIT1、NIT2进行排序,然后是SC1、SC2、SC3。然后EC1,EC2
动态值为“SC”时添加的预期结果
我无法理解您的具体排序规则,但您应该能够使用CASE表达式实现您想要的:
order by
case order_assist
when 'SC' then <first thing to order by for SC>
when 'NITG' then <first thing to order by for NITG>
...
end,
case order_assist
when 'SC' then <second thing to order by for SC>
when 'NITG' then <second thing to order by for NITG>
...
end,
... etc.
orderby
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
... 等
我无法理解您的具体订购规则,但您应该能够使用CASE表达式实现您想要的:
order by
case order_assist
when 'SC' then <first thing to order by for SC>
when 'NITG' then <first thing to order by for NITG>
...
end,
case order_assist
when 'SC' then <second thing to order by for SC>
when 'NITG' then <second thing to order by for NITG>
...
end,
... etc.
orderby
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
... 等
我无法理解您的具体订购规则,但您应该能够使用CASE表达式实现您想要的:
order by
case order_assist
when 'SC' then <first thing to order by for SC>
when 'NITG' then <first thing to order by for NITG>
...
end,
case order_assist
when 'SC' then <second thing to order by for SC>
when 'NITG' then <second thing to order by for NITG>
...
end,
... etc.
orderby
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
... 等
我无法理解您的具体订购规则,但您应该能够使用CASE表达式实现您想要的:
order by
case order_assist
when 'SC' then <first thing to order by for SC>
when 'NITG' then <first thing to order by for NITG>
...
end,
case order_assist
when 'SC' then <second thing to order by for SC>
when 'NITG' then <second thing to order by for NITG>
...
end,
... etc.
orderby
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
案件处理及协助
什么时候“SC”呢
什么时候“Niting”呢
...
完,,
... 等
听起来你想要的可能是:
order by case when p_sort_param = 'SC' and order_assist like 'SC%' then 1
when p_sort_param = 'SC' and order_assist like 'NIT%' then 2
when p_sort_param = 'NITG' and order_assist like 'NIT%' then 1
when p_sort_param = 'NITG' and order_assist like 'SC%' then 2
else 3
end,
order_assist
其中p_sort_param是传入以提供“动态”值的参数。这假设您正在通过存储过程运行查询。如果是手动运行的查询(例如,在Toad中),则在参数名称前面添加冒号,以使
:p_sort_param
听起来可能是您想要的:
order by case when p_sort_param = 'SC' and order_assist like 'SC%' then 1
when p_sort_param = 'SC' and order_assist like 'NIT%' then 2
when p_sort_param = 'NITG' and order_assist like 'NIT%' then 1
when p_sort_param = 'NITG' and order_assist like 'SC%' then 2
else 3
end,
order_assist
其中p_sort_param是传入以提供“动态”值的参数。这假设您正在通过存储过程运行查询。如果是手动运行的查询(例如,在Toad中),则在参数名称前面添加冒号,以使
:p_sort_param
听起来可能是您想要的:
order by case when p_sort_param = 'SC' and order_assist like 'SC%' then 1
when p_sort_param = 'SC' and order_assist like 'NIT%' then 2
when p_sort_param = 'NITG' and order_assist like 'NIT%' then 1
when p_sort_param = 'NITG' and order_assist like 'SC%' then 2
else 3
end,
order_assist
其中p_sort_param是传入以提供“动态”值的参数。这假设您正在通过存储过程运行查询。如果是手动运行的查询(例如,在Toad中),则在参数名称前面添加冒号,以使
:p_sort_param
听起来可能是您想要的:
order by case when p_sort_param = 'SC' and order_assist like 'SC%' then 1
when p_sort_param = 'SC' and order_assist like 'NIT%' then 2
when p_sort_param = 'NITG' and order_assist like 'NIT%' then 1
when p_sort_param = 'NITG' and order_assist like 'SC%' then 2
else 3
end,
order_assist
其中p_sort_param是传入以提供“动态”值的参数。这假设您正在通过存储过程运行查询。如果是手动运行的查询(例如在Toad中),则在参数名称前添加冒号,以使
:p_sort_param
排序规则不明确。规则是,我的group by query将按预期对记录进行分组,但我希望动态排序,就像我的类通过“SC1”一样要排序辅助列,我想将记录排序为SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后是EC1,EC2。排序规则不清楚。规则是,我的group by query将按照我的预期对记录进行分组,但我希望动态排序记录,例如,如果我的类将“SC1”传递到order\u assist列,则我希望将记录排序为SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后是EC1,EC2。排序规则不清楚。规则是,我的group by query将按照我的预期对记录进行分组,但我希望动态排序记录,例如,如果我的类将“SC1”传递到order\u assist列,则我希望将记录排序为SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后是EC1,EC2。排序规则不清楚。规则是,我的group by query将按照我的预期对记录进行分组,但我希望动态排序记录,例如,如果我的类将“SC1”传递到order\u assist列,则我希望将记录排序为SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后EC1,EC2。在上述情况下,我不会得到记录顺序为SC1,SC2,SC3,SC4,NITG1,NITG2,EC1,EC2。我的预期结果是,当SC1被动态地传递给ORDER_ASSIST时,我希望以SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2的形式订购。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后EC1,EC2。在上述情况下,我不会得到记录顺序为SC1,SC2,SC3,SC4,NITG1,NITG2,EC1,EC2。我的预期结果是,当SC1被动态地传递给ORDER_ASSIST时,我希望以SC1、SC2、SC3、SC4、NITG1、NITG2、EC1、EC2的形式订购。如果NIT1传递给订单协助,我想作为NIT1、NIT2再订购SC1、SC2、SC3。然后EC1,EC2。在上述情况下,我不会得到记录顺序为SC1,SC2,SC3,SC4,NITG1,NITG2,EC1,EC2。我的预期结果是当SC1被动态地传递给我想要的ORDER_ASSIST时