如何按条件以不同的顺序联合所有
Posted
技术标签:
【中文标题】如何按条件以不同的顺序联合所有【英文标题】:How to do union all with different order by conditions 【发布时间】:2014-04-10 11:50:07 【问题描述】:我有一个表格,其中包含类似的数据
我想要表中的所有记录,但具有 EnquiryStatus=1 且按 LastAttendendedDate 排序的记录应位于顶部,其余记录应位于这些记录之后。我尝试使用 where 条件选择两次,并尝试将所有这些联合起来,但是由于该联合都不允许我以不同的方式排序。我可以在 c# 中通过将数据检索为两个表并将它们合并为单个表来实现。但我想要它在 sql..
编辑:
我想要类似的东西
Select * From EnquiryMaster A Where A.BranchID=16 and EnquiryStatus=1 ORDER BY A.CreatedDate Desc
UNION ALL
Select * From EnquiryMaster A Where A.BranchID=16 and EnquiryStatus in(0,2,3) ORDER BY EnquiryStatus,A.CreatedDate Desc
【问题讨论】:
不要发布图片,链接会死掉,示例数据很难复制/粘贴。如果您改为提供带有此数据的sql-fiddle,将会很有帮助。要创建它,您可以使用那里的“Text-To-DDL”功能。 【参考方案1】:SELECT * FROM TABLE_NAME WHERE ORDER BY CASE WHEN EnquiryStatus='1' THEN LastAttendendedDate END DESC
你可以在sql中使用这个。
【讨论】:
我想要所有的记录不仅只有 1【参考方案2】:试试这个
select * from your_table
order by case when EnquiryStatus=1 then LastAttendendedDate end DESC
【讨论】:
我想要完全一样,但按 desc 排序 出现错误 关键字“desc”附近的语法不正确。以上是关于如何按条件以不同的顺序联合所有的主要内容,如果未能解决你的问题,请参考以下文章