|
Posted by plaster1 on 04/09/07 20:33
On Apr 5, 10:04 pm, Ed Murphy <emurph...@socal.rr.com> wrote:
> plast...@gmail.com wrote:
> > Been trying to come up with a query to filter-down my sample set into
> > distinct records. For instance, lets say column1 is a sample set,
> > column2 is the parameter, and column3 is a name and column4 is a type
> > (lets also say there is a fifth column (id) that is an id). What I
> > need is one record per type per sample only if type is given, if not,
> > then return that record as well.
>
> > I've used a subquery to get as close to the desired query is as
> > possible:
>
> > select * from table1
> > where id in (select min(id) from table1
> > where column1="A"
> > group by column1, column2)
>
> > Here's an example of all data for sample "A":
>
> > 1 2 3 4
> > ----------
> > A 1 X P
> > A 1 Y P
> > A 1 Z P
> > A 2 W
> > A 3 W
> > A 4 T P
> > A 5 U P
> > A 6 V P
> > A 7 T
> > A 7 U
> > A 7 V
>
> > I want output :
>
> > 1 2 3
> > -------
> > A 1 X P
> > A 2 W
> > A 3 W
> > A 4 T P
> > A 5 U P
> > A 6 V P
> > A 7 T
> > A 7 U
> > A 7 V
>
> > Except the above query will exclude the last two records because
> > column3 is not 'grouped by'.
>
> > Basically I need to reduce any 'range' of records per sample (column
> > a) where column4 is not null (ie = 'P'), to only one record and
> > keeping all others. Thanks in advance:
>
> What about this?
>
> select column1, column2, column3, column4
> from table1
> where id in (
> select min(id)
> from table1
> group by column1, column2
> )
> and column4 is not null
> union
> select column1, column2, column3, column4
> from table1
> where column4 is null
>
> What would you want to do with the following data?
>
> 1 2 3 4 id
> ----------
> A 8 X P 12
> A 8 Y Q 13
> A 9 X P 14
> A 9 Y 15 <- column4 is null- Hide quoted text -
>
> - Show quoted text -
Thanks Ed. Although i'm getting syntax issues with the UNION portion
of you query. Perhaps that's a version issue as well (i'm using SQL
server 7.0).
Navigation:
[Reply to this message]
|