Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我如何分组并获得特定的输出_Sql - Fatal编程技术网

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