【发布时间】:2017-09-11 09:58:29
【问题描述】:
我有这个 SQL 语句,它根据 change_order 和 change_id 对行进行排序。
我的陈述如下:
select *
from change_dtl_from2
where chnfr_hdrno = 'CH000009'
order by
case
when chnorder is null
then 1
else 0
end asc, change_id asc
chnfr_hdrno 是文档编号,chnorder 是 change_order,change_id 是每行的唯一键。
如果我执行那个语句,结果会是这样的:
如您所见,chnorder 值为 5 的行位于最顶部,其中 chnorder 设置其顺序升序。我不知道我在哪里或做错了什么。
chnorder 的默认值为 null 并且是 int 列。这就是为什么我很困惑,因为每当我添加新行时,新行都会在最上面。我希望你们都可以帮助我。 :)
【问题讨论】:
-
升序排序时,0 在 1 之前。不清楚您希望看到什么。对于您显示的所有行,
chnorder已设置,因此它们都将按 0 排序,后跟change_id中的值。 -
您当前的输出是正确且符合预期的。
-
由于您的样本数据中
chnorder的所有值都是NOT NULL,因此整个数据集按change_id排序 - 并且它按change_id正确排序 - 那么问题/问题是什么? -
您有什么问题或想从上面的示例中了解?在上面的例子中,order by 将是“order by 0 asc, change_id asc”。
标签: sql asp.net sql-server vb.net