I used the following query with sql server 2008 to select data group by weekly.
SET DATEFIRST 1;
SELECT userid,
Sum(ISNULL(ljoin,0)) AS ljoin,
Sum(ISNULL(rjoin,0)) AS rjoin, DATEPART(wk, Date) AS WeekNumber,
CASE
WHEN YEAR(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min([date])), Min([date]))) < YEAR(Min([date]))
THEN
CAST(DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, 0 ,GETDATE())), 0) AS Varchar(50))
+ ' TO ' + Cast(DATEADD(dd, 7-(DATEPART(dw, Min([date]))), Min([date])) AS Varchar(50))
ELSE
Cast(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min([date])), Min([date])) AS Varchar(50))
+ ' TO ' + Cast(DATEADD(dd, 7-(DATEPART(dw, Min([date]))), Min([date])) AS Varchar(50))
END AS DateRange
FROM Pairs_Details where userid='jitu'
Group By userid,DATEPART(wk, Date)
but it return following result
userid ljoin rjoin WeekNumber DateRange
jitu 0 2 1 Jan 1 2014 12:00AM TO Jan 5 2014 12:00AM
jitu 1 1 2 Jan 6 2014 12:00AM TO Jan 12 2014 12:00AM
jitu 1 0 3 Jan 13 2014 12:00AM TO Jan 19 2014 12:00AM
jitu 2 0 5 Jan 27 2014 10:00PM TO Feb 2 2014 10:00PM
and whant query which return following result
userid ljoin rjoin WeekNumber DateRange pair
jitu 0 2 1 Jan 1 2014 12:00AM TO Jan 5 2014 12:00AM 0
jitu 1 1 2 Jan 6 2014 12:00AM TO Jan 12 2014 12:00AM 1
jitu 1 0 3 Jan 13 2014 12:00AM TO Jan 19 2014 12:00AM 0
jitu 2 0 5 Jan 27 2014 10:00PM TO Feb 2 2014 10:00PM 0
this can be done using the following query and above query
Select Case When ljoin <= rjoin Then ljoin Else rjoin End As pair from Pairs_Details
but i don't no how we can combine the both query please any one can tell us or suggest us so that we can get my desired result. there are my following table structure and data.
CREATE TABLE [dbo].[Pairs_Details](
[sno] [int] IDENTITY(1,1) NOT NULL,
[userid] [nvarchar](50) NULL,
[date] [datetime] NULL,
[ljoin] [int] NULL,
[rjoin] [int] NULL
) ON [PRIMARY]
sno userid date ljoin rjoin
1 jitu 2013-01-01 00:00:00.000 1 NULL
2 jitu 2014-01-02 00:00:00.000 NULL 1
3 tetu1234 2014-01-03 00:00:00.000 1 NULL
4 jitu 2014-01-04 00:00:00.000 NULL 1
5 saurbh123 2014-01-05 00:00:00.000 1 NULL
6 jitu 2014-01-06 00:00:00.000 1 NULL
9 saurbh123 2014-01-12 00:00:00.000 NULL 1
10 jitu 2014-01-13 00:00:00.000 1 NULL
11 rajeev123 2014-01-29 22:00:13.000 1 NULL
12 saurbh123 2014-01-29 22:00:13.000 1 NULL
13 jitu 2014-01-29 22:00:13.000 1 NULL
14 rajeev123 2014-01-29 22:01:03.000 NULL 1
15 saurbh123 2014-01-29 22:01:03.000 1 NULL
16 jitu 2014-01-29 22:01:03.000 1 NULL
7 tetu1234 2014-01-07 00:00:00.000 NULL 1
8 jitu 2014-01-08 00:00:00.000 NULL 1
Your second query needs to use aggregate functions. rjoin and ljoin refer to the original columns, not the aggregate columns in your output. Try this:
SET DATEFIRST 1;
SELECT userid,
Sum(ISNULL(ljoin,0)) AS ljoin,
Sum(ISNULL(rjoin,0)) AS rjoin, DATEPART(wk, Date) AS WeekNumber,
CASE
WHEN YEAR(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min([date])), Min([date]))) < YEAR(Min([date]))
THEN
CAST(DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, 0 ,GETDATE())), 0) AS Varchar(50))
+ ' TO ' + Cast(DATEADD(dd, 7-(DATEPART(dw, Min([date]))), Min([date])) AS Varchar(50))
ELSE
Cast(DATEADD(DAY, 1-DATEPART(WEEKDAY, Min([date])), Min([date])) AS Varchar(50))
+ ' TO ' + Cast(DATEADD(dd, 7-(DATEPART(dw, Min([date]))), Min([date])) AS Varchar(50))
END AS DateRange,
Case
When Sum(ISNULL(ljoin,0)) <= Sum(ISNULL(rjoin,0)) Then Sum(ISNULL(ljoin,0))
Else Sum(ISNULL(rjoin,0))
End As pair
FROM Pairs_Details where userid='jitu'
Group By userid,DATEPART(wk, Date)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.