Sql 我如何分组并获得特定的输出
我有一个问题如下Sql 我如何分组并获得特定的输出,sql,Sql,我有一个问题如下 select P.Id, P.cId,case P.orgid when 0 then 'N/A' else convert(varchar(10), P.orgid) end orgid, P.dateCompleted, P.dateP, P.dateEff from base P left outer join ( select P.noteId, P.dateCompleted, P.dateP, P.dateEff from base P w
select P.Id, P.cId,case P.orgid when 0 then 'N/A' else convert(varchar(10), P.orgid) end orgid, P.dateCompleted, P.dateP, P.dateEff
from base P left
outer join (
select P.noteId, P.dateCompleted, P.dateP, P.dateEff
from base P
where P.dateDeleted is null and P.isUpdate = 'N'
) O on P.orgid = O.Id
目前,我得到如下输出:
Id cID orgid datecompleted dateP dateeff
1 23 N/A 07/16/2017 07/16/2017 07/16/2017
2 24 N/A " " "
3 24 N/A " " "
4 23 1 " " "
5 27 2 " " "
但我的预期产出是:
Id cID orgid datecompleted dateP dateeff
1 23 N/A 07/16/2017 07/16/2017 07/16/2017
4 23 1 " " "
2 24 N/A " " "
5 27 2 " " "
3 24 N/A " " "
我已经尝试使用group by,但由于其他选择参数,我无法获得此输出
请告诉我。您可以按
顺序使用逻辑:
order by coalesce(nullif(p.orgid, 0), p.id), p.id
基本思想是按orgid
排序(如果有)。如果不是,则在其中替换id
。然后,每个组内的排序看起来都是通过id
进行的。请解释预期结果的逻辑。id是原始记录,基于原始记录,我可以创建副本(以原始id作为orgid的副本形式).我想看看我所有的原始记录,然后一个接一个地复制。这两个结果之间的区别只是顺序不同,从我所看到的来看,你想要结果的顺序是什么?您使用的是哪家供应商(我的sql、sql server…)?ID按排序顺序排列,假设ID为1。我已经为id=1=>(4,5)创建了两条重复记录。然后我想看看顺序1,4,5我认为@GordonLinoff答案是有效的,不是吗?当我们下订单时,这里可以使用DESC,ASC吗by@xyz . . . 是的,您可以在任一键或两个键上使用DESC
/ASC
。