对SQL记录进行排序

对SQL记录进行排序

问题描述:

我需要按字母顺序排列我的SQL存储过程记录集(按照CustomerName),但也要保持RecordID的顺序(意思是RecordID 2在RecordID 3之上,相对于ParentID & ID字段) 。有什么建议么?对SQL记录进行排序

ID   ParentID   RecordID  CustomerName 
53445347  5344  2     Witt - 47 
534453475345 53445347 3     Witt - 45 
534453475346 53445347 3     Witt - 46 
53445351  5344  2     Sjob - 51 
534453515348 53445351 3     Sjob - 48 
534453515349 53445351 3     Sjob - 49 
534453515350 53445351 3     Sjob - 50 
53445357  5344  2     Hal - 57 
534453575355 53445357 3     Hal - 55 
534453575356 53445357 3     Hal - 56 
534453577252 53445357 3     Hal - 52 
53446852  5344  2     Boston, - 52 
534468526850 53446852 3     Boston, - 50 
534468526851 53446852 3     Boston, - 51 
534468527205 53446852 3     Boston, - 05 
53447884  5344  2     Agri - 84 
534478847883 53447884 3     Agri - 83 
534478847957 53447884 3     Agri - 57 

预期的输出会是这样:

53447884  5344  2     Agri - 84 
534478847883 53447884 3     Agri - 83 
534478847957 53447884 3     Agri - 57 
53446852  5344  2     Boston, - 52 
534468526850 53446852 3     Boston, - 50 
534468526851 53446852 3     Boston, - 51 
534468527205 53446852 3     Boston, - 05 
53445357  5344  2     Hal - 57 
534453575355 53445357 3     Hal - 55 
534453575356 53445357 3     Hal - 56 
534453577252 53445357 3     Hal - 52 
53445351  5344  2     Sjob - 51 
534453515348 53445351 3     Sjob - 48 
534453515349 53445351 3     Sjob - 49 
534453515350 53445351 3     Sjob - 50 
53445347  5344  2     Witt - 47 
534453475345 53445347 3     Witt - 45 
534453475346 53445347 3     Witt - 46 
+0

并不一定要了解,你能告诉通缉的结果的样本? –

+0

>> –

+0

另外,如果你有很好的格式化样本输入,请尝试制作一些格式良好的样本输出。 –

如果所有客户名称为您的样品中形成:

ORDER BY SUBSTRING(CustomerName, 0, CHARINDEX('-', CustomerName)), RecordID 

顺便说一句,如果您有任何机会改变你的模型,将CustomerName的alpha和数字部分分成两个字段,你的生活会更好,世界将会是一个整体。

如果能有客户名称,而不-

而是尝试

ORDER BY CASE WHEN CHARINDEX('-', CustomerName) = 0 
       THEN CustomerName 
       ELSE SUBSTRING(CustomerName, 0, CHARINDEX('-', CustomerName)) 
      END, 
      RecordID 
+0

这看起来不错....这可能是答案...需要测试它。谢谢@RaphaëlAlthaus – DotNetRookie

+0

我同意@RaphaëlAlthaus,但这只是一个样本记录集...该列中的其他值...一些都是alpha,一些都是数值....所以如果我这样做...世界将停下来:( – DotNetRookie

+0

@DotNetRookie也许看看第二种解决方案,如果不是所有的CustomerNames都有' - ' –