Thanks Bob, it definitely works, but I still use 80 compatibility level...
GB
"Bob" <Bob@discussions.microsoft.com> wrote in message
news:108F935B-C455-40A5-A45B-BBC157F532F6@microsoft.com...
> SQL 2005 only solution using new OVER clause
>
> --DROP TABLE #tblInput
> GO
> CREATE TABLE #tblInput
> (
> [NameID] [nchar](10),
> [Date] [datetime] NULL,
> [Value] [nchar](10)
> )
> GO
>
> SET NOCOUNT ON
>
> INSERT INTO #tblInput VALUES ( 1, '01/12/2001 12:00:00 AM', 'A' )
> INSERT INTO #tblInput VALUES ( 1, '01/12/2001 12:00:00 AM', 'B' )
> INSERT INTO #tblInput VALUES ( 1, '01/12/2001 12:00:00 AM', 'C' )
> INSERT INTO #tblInput VALUES ( 1, '01/12/2001 12:00:00 AM', 'A' )
> INSERT INTO #tblInput VALUES ( 1, '01/12/2001 12:00:00 AM', 'C' )
> INSERT INTO #tblInput VALUES ( 1, '02/12/2001 12:00:00 AM', 'B' )
> INSERT INTO #tblInput VALUES ( 1, '02/12/2001 12:00:00 AM', 'B' )
> INSERT INTO #tblInput VALUES ( 1, '02/12/2001 12:00:00 AM', 'A' )
> INSERT INTO #tblInput VALUES ( 2, '01/12/2001 12:00:00 AM', 'C' )
> INSERT INTO #tblInput VALUES ( 2, '01/12/2001 12:00:00 AM', 'D' )
> INSERT INTO #tblInput VALUES ( 2, '01/12/2001 12:00:00 AM', 'C' )
>
> SET NOCOUNT OFF
> GO
>
> -- Use the new OVER() clause
> SELECT NameId, Date
> , (A + .00) / total_records AS A
> , (B + .00) / total_records AS B
> , (C + .00) / total_records AS C
> , (D + .00) / total_records AS D
> FROM
> (
> SELECT *, COUNT(*) OVER( PARTITION BY NameId, Date ) AS total_records
> FROM #tblInput
> ) x
> PIVOT ( COUNT( Value ) For Value In ( [A], [B], [C], [D] ) ) pvt
> ORDER BY Date, NameId
>
>
> Let me know how you get on.
>
> wBob
>
> "GB" wrote:
>
> > Hello,
> > I have a table tblInput like this:
> > CREATE TABLE [dbo].[tblInput(
> > [NameID] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
> > [Date] [datetime] NULL,
> > [Value] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
> > ) ON [PRIMARY]
> >
> > with data (sorry, no SQL INSERT...):
> >
> > NameID |Date |Value
> > -------------------------------------
> > 1 01/12/2001 12:00:00 AM A
> > 1 01/12/2001 12:00:00 AM B
> > 1 01/12/2001 12:00:00 AM C
> > 1 01/12/2001 12:00:00 AM A
> > 1 01/12/2001 12:00:00 AM C
> > 1 02/12/2001 12:00:00 AM B
> > 1 02/12/2001 12:00:00 AM B
> > 1 02/12/2001 12:00:00 AM A
> > 2 01/12/2001 12:00:00 AM C
> > 2 01/12/2001 12:00:00 AM D
> > 2 01/12/2001 12:00:00 AM C
> >
> > I need a SELECT statement to get a recordset like this:
> >
> > NameID |Date |A |B |C |D
> > --------------------------------------------------------------
> > 1 01/12/2001 12:00:00 AM 0.4 0.2 0.4 0
> > 1 02/12/2001 12:00:00 AM 0 0.66 0.33 0
> > 2 01/12/2001 12:00:00 AM 0 0 0.66 0.33
> >
> >
> > Thanks,
> > GB
> >
> >
> >