0

SQL ストアド プロシージャ レコードセット (以下を参照) をアルファベット順 (CustomerName 順) に並べ替える必要がありますが、RecordID の順序も維持する必要があります (ParentID および ID フィールドに関して、RecordID 2 が RecordID 3 の上にあることを意味します)。助言がありますか?

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
4

1 に答える 1

3

すべての顧客名がサンプルのように形成されている場合:

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

ところで、モデルを変更する機会があれば、CustomerName の英字部分と数値部分を 2 つのフィールドに分割すると、生活がより良くなり、世界が 1 つになります。

なしで顧客名を使用できる場合-

むしろやってみる

ORDER BY  CASE WHEN CHARINDEX('-', CustomerName) = 0 
               THEN CustomerName
               ELSE SUBSTRING( CustomerName, 0, CHARINDEX( '-', CustomerName))
            END,
            RecordID
于 2012-10-05T20:53:57.587 に答える