Solved

Sort Column in SQL Server

Posted on 2013-05-18
11
387 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
  • 4
  • 2
  • 2
  • +1
11 Comments
 
LVL 69

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 69

Accepted Solution

by:
Qlemo earned 250 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
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

 
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 48

Assisted Solution

by:PortletPaul
PortletPaul earned 250 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 69

Expert Comment

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

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 69

Expert Comment

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

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

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

I wrote this interesting script that really help me find jobs or procedures when working in a huge environment. I could I have written it as a Procedure but then I would have to have it on each machine or have a link to a server-related search that …
Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

770 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