[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Sort Column in SQL Server

Posted on 2013-05-18
11
Medium Priority
?
397 Views
Last Modified: 2013-05-28
Hi,

I have two columns in table MEMBERFAMILY called MEMBERNO and SPOUSENO.

The Data stored in these columns are as follows

MEMBERNO          SPOUSENO
A-1                         A-2
B-11                       B-101
B-14                       B-114

I need the ouput AS USERNO after sort as under in one column. While sort it is first sorted by alpha and then numeric.

Delimiter "-" is there in all the data

USERNO
A-1
A-2
B-11
B-14
B-101
B-114
0
Comment
Question by:GRChandrashekar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
  • +1
11 Comments
 
LVL 71

Expert Comment

by:Qlemo
ID: 39177292
If we can rely on a fixed format:
select * from
(select memberno as userno from memberfamily
union
select spouseno from memberfamily
) data
order by left(userno,1), substring(userno, 3, 10)

Open in new window

0
 

Author Comment

by:GRChandrashekar
ID: 39177301
Only delimiter is constant.
Alpha may be A, CRPB, XYZDDES and so on
Similarly length of number also is not fixed, it may be 0,10023342342, 34 and so on
0
 
LVL 71

Accepted Solution

by:
Qlemo earned 1000 total points
ID: 39177320
I was afraid of that. Besides, the secondary sort expression was incorrect.
select userno from
(select memberno as userno, charindex('-', memberno) as idx from memberfamily
union
select spouseno, charindex('-', spouseno)  from memberfamily
) data
order by left(userno,idx), cast(substring(userno, idx+1, 100) as bigint)

Open in new window

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 32

Expert Comment

by:awking00
ID: 39177332
So, if alpha includes A, B, and ABC, the order should be?
A
ABC
B
0
 
LVL 49

Assisted Solution

by:PortletPaul
PortletPaul earned 1000 total points
ID: 39177334
select
  code
from (
      select
          MEMBERNO as code
        , substring(MEMBERNO,1,charindex('-',MEMBERNO)-1) as alpha
        , cast(substring(MEMBERNO,charindex('-',MEMBERNO)+1,50) as int) as num
      from MEMBERFAMILY
      union all
      select
          SPOUSENO
        , substring(SPOUSENO,1,charindex('-',MEMBERNO)-1)
        , cast(substring(SPOUSENO,charindex('-',MEMBERNO)+1,50) as int)
      from MEMBERFAMILY
      ) ms
order by alpha, num

Open in new window

0
 
LVL 32

Expert Comment

by:awking00
ID: 39177354
PortletPaul beat me to it (again) but thought I would still post my solution -
select * from
(select memberno as userno from memberfamily
 union all
 select spouseno as userno from memberfamily) as x
order by substring(userno,1,charindex('-',userno)-1),
cast(substring(userno,charindex('-',userno)+1,len(userno)) as int;
0
 
LVL 71

Expert Comment

by:Qlemo
ID: 39177363
In which way is PortletPaul's code to prefer over my much more simple one?
0
 
LVL 49

Expert Comment

by:PortletPaul
ID: 39187912
I haven't tested it but his proposed solution does indeed appear to meet the requirements.  
I  can't offer any opinion as to why mine was chosen.

I wish to add is that my suggestion was done without reference to Qlemo's
0
 
LVL 71

Expert Comment

by:Qlemo
ID: 39190531
Suppose equal split between http:#a39177320 and http:#a39177334 would be appropriate.
0

Featured Post

Survive A High-Traffic Event with Percona

Your application or website rely on your database to deliver information about products and services to your customers. You can’t afford to have your database lose performance, lose availability or become unresponsive – even for just a few minutes.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article we will learn how to fix  “Cannot install SQL Server 2014 Service Pack 2: Unable to install windows installer msi file” error ?
An alternative to the "For XML" way of pivoting and concatenating result sets into strings, and an easy introduction to "common table expressions" (CTEs). Being someone who is always looking for alternatives to "work your data", I came across this …
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question