【发布时间】:2019-07-10 02:03:29
【问题描述】:
我需要以这种特定方式对以下查询的结果进行排序:
1) 在第一行中,IdItem 的 IsComplete 值 = 0,并且相同的 IdItem 已经完成了任务 (IsComplete = 1)
2) 其余行按IdItem ASC 排序。
--Current Select
SELECT
IdTask,
IdTaskDetail,
IdTask,
IdItem,
IsComplete,
RealQty,
ProposalQty
from TaskDetail
where IdTask = 751
and IsComplete = 0
ORDER BY (ProposalQty - RealQty)/ProposalQty ASC, IdItem ASC
--Creating table and values inside
CREATE TABLE TaskDetail
(IdTaskDetail int,
IdTask int,
IdItem int,
IsComplete int,
RealQty int,
ProposalQty int)
--Values
insert into TaskDetail (IdTaskDetail, IdTask, IdItem, IsComplete, RealQty, ProposalQty)
values (1642, 751, 10820, 0, 0, 12)
insert into TaskDetail (IdTaskDetail, IdTask, IdItem, IsComplete, RealQty, ProposalQty)
values (1641, 751, 9228, 0, 0, 12)
insert into TaskDetail (IdTaskDetail, IdTask, IdItem, IsComplete, RealQty, ProposalQty)
values (1640, 751, 9228, 0, 0, 12)
insert into TaskDetail (IdTaskDetail, IdTask, IdItem, IsComplete, RealQty, ProposalQty)
values (1643, 751, 10820, 1, 12, 12)
--Current table data
IdTask IdTaskDetail IdTask IdItem IsComplete RealQty ProposalQty
751 1641 751 9228 0 0 12
751 1640 751 9228 0 0 12
751 1642 751 10820 0 0 12
751 1643 751 10820 1 12 12
期望的结果应该是这样的(因为有一个 IsComplete = 1 任务与项目 10820):
IdTask IdTaskDetail IdTask IdItem IsComplete RealQty ProposalQty
751 1642 751 10820 0 0 12
751 1640 751 9228 0 0 12
751 1641 751 9228 0 0 12
最后两行列具有相同的条件,因此顺序无关紧要。
【问题讨论】:
标签: sql select sql-order-by