If i have Two tables
First
| QuestionID(primary key) | Target value | |
| 1 | 100 |
| RecordID(primary key) | Achieved value | QuestionID (FORIGN KEY) |
| 1 | 123 | 1 |
| 2 | 432 | 1 |
When i want to calculate the sum using Inner join i.e.
SELECT SUM(TargetValue) AS TARGET ,SUM(AchievedValue) AS ACHIEVED FROM First
INNER JOIN Second AS S ONS.QuestionID=First.QuestionID
Where 1=1
Then it gives me SUM OF TARGET VALUE 200 Instead of 100 Why???

Rafnas T PPosted Feb 10, 2017, 7:08 AM
Rafnas T PPosted Feb 10, 2017, 6:55 AM
Danish HabibPosted Oct 9, 2015, 2:10 AM
Danish HabibPosted Oct 9, 2015, 2:05 AM
Pankaj Kumar ChoudharyPosted Sep 15, 2015, 2:20 PM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_Test] Script Date: 09/15/2015 21:37:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_Test](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [int]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @TabALL TABLE
(
[District] int ,
[Year] int ,
[Quarter] int
)
DECLARE @Year_Tab TABLE
(
Year_Id int
)
DECLARE @Quarter_Tab TABLE
(
Quarter_Id int
)
DECLARE @District_Tab TABLE
(
District_Id int
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int];
DECLARE @EndIndex1 INT;
SET @StartIndex=1;
DECLARE @Str [nvarchar](max);
IF @DistrictStr IS NOT NULL
BEGIN
SET @DistrictStr=@DistrictStr+',';
WHILE CHARINDEX(',', @DistrictStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @Str=SUBSTRING(@DistrictStr,1,@EndIndex1-1)
INSERT INTO @District_Tab VALUES (@Str)
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
END
END
ELSE
BEGIN
INSERT INTO @District_Tab VALUES (NULL)
END
IF @QuarterStr IS NOT NULL
BEGIN
SET @QuarterStr=@QuarterStr+',';
WHILE CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @QuarterStr);
SET @Str=SUBSTRING(@QuarterStr,1,@EndIndex1-1)
INSERT INTO @Quarter_Tab VALUES (@Str)
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex1 + 1, LEN(@QuarterStr))
END
END
ELSE
BEGIN
INSERT INTO @Quarter_Tab VALUES (NULL)
END
IF @YearStr IS NOT NULL
BEGIN
SET @YearStr=@YearStr+',';
WHILE CHARINDEX(',', @YearStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @YearStr);
SET @Str=SUBSTRING(@YearStr,1,@EndIndex1-1)
INSERT INTO @Year_Tab VALUES (@Str)
SET @YearStr=SUBSTRING(@YearStr, @EndIndex1 + 1, LEN(@YearStr))
END
END
ELSE
BEGIN
INSERT INTO @Year_Tab VALUES(NULL)
END
INSERT INTO @TabALL
SELECT * FROM (SELECT dt.District_Id FROM @District_Tab dt)T1,(SELECT yt.Year_Id FROM @Year_Tab yt)T2,(SELECT qt.Quarter_Id FROM @Quarter_Tab qt )T3
DECLARE RESULT_CURSOR CURSOR
FOR
SELECT * FROM @TabALL ta
OPEN RESULT_CURSOR
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
WHILE @@FETCH_STATUS = 0
BEGIN
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
IF @DistrictID=0
BEGIN
SET @DistrictID=NULL;
END
IF @YearID=0
BEGIN
SET @YearID=NULL;
END
IF @QuarterID=0
BEGIN
SET @DistrictID=NULL;
END
INSERT INTO @Tab2
SELECT Cte2.Target,Cte2.Achieved ,t. * FROM
(
SELECT QuestionTarget.Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_FormMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS Target,CTE.Achieved AS Achieved FROM QuestionTarget
FULL OUTER JOIN
(SELECT Question_ID,Sum(ISNULL(S.QTotal,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved FROM AnswersNew AS S
WHERE
(@YearID IS NULL OR ( S.Year=@YearID)) AND
(@QuarterID IS NULL OR( S.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR(S.DistrictId =@DistrictID))
AND (@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY Question_ID)CTE
ON
CTE.Question_ID=QuestionTarget.Question_ID
WHERE
(@YearID IS NULL OR ( dbo.QuestionTarget.Year=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.District=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY QuestionTarget.Question_ID,CTE.Achieved
)Cte2 , @Tab t
DELETE FROM @Tab;
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
END
CLOSE RESULT_CURSOR
DEALLOCATE RESULT_CURSOR
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+ t.District FROM @Tab2 t WHERE t.District!='ALL'
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t WHERE t.year !='ALL'
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t WHERE t.Quarter!='ALL'
DELETE FROM @Tab
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, -- Year - Nvarchar
@Quarter_, -- Quarter - Nvarchar
@District_, -- District - Nvarchar
@QuestionText_ -- QuestionText - NVarchar
)
IF @Year_ IS NULL
BEGIN
SET @Year_='ALL'
END
IF @District_ IS NULL
BEGIN
SET @District_='ALL'
END
IF @Quarter_ IS NULL
BEGIN
SET @Quarter_='ALL'
END
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Pankaj Kumar ChoudharyPosted Sep 15, 2015, 2:17 PM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_Test] Script Date: 09/15/2015 21:37:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_Test](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [int]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @TabALL TABLE
(
[District] int ,
[Year] int ,
[Quarter] int
)
DECLARE @Year_Tab TABLE
(
Year_Id int
)
DECLARE @Quarter_Tab TABLE
(
Quarter_Id int
)
DECLARE @District_Tab TABLE
(
District_Id int
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int];
DECLARE @EndIndex1 INT;
SET @StartIndex=1;
DECLARE @Str [nvarchar](max);
IF @DistrictStr IS NOT NULL
BEGIN
SET @DistrictStr=@DistrictStr+',';
WHILE CHARINDEX(',', @DistrictStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @Str=SUBSTRING(@DistrictStr,1,@EndIndex1-1)
INSERT INTO @District_Tab VALUES (@Str)
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
END
END
ELSE
BEGIN
INSERT INTO @District_Tab VALUES (NULL)
END
IF @QuarterStr IS NOT NULL
BEGIN
SET @QuarterStr=@QuarterStr+',';
WHILE CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @QuarterStr);
SET @Str=SUBSTRING(@QuarterStr,1,@EndIndex1-1)
INSERT INTO @Quarter_Tab VALUES (@Str)
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex1 + 1, LEN(@QuarterStr))
END
END
ELSE
BEGIN
INSERT INTO @Quarter_Tab VALUES (NULL)
END
IF @YearStr IS NOT NULL
BEGIN
SET @YearStr=@YearStr+',';
WHILE CHARINDEX(',', @YearStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @YearStr);
SET @Str=SUBSTRING(@YearStr,1,@EndIndex1-1)
INSERT INTO @Year_Tab VALUES (@Str)
SET @YearStr=SUBSTRING(@YearStr, @EndIndex1 + 1, LEN(@YearStr))
END
END
ELSE
BEGIN
INSERT INTO @Year_Tab VALUES(NULL)
END
INSERT INTO @TabALL
SELECT * FROM (SELECT dt.District_Id FROM @District_Tab dt)T1,(SELECT yt.Year_Id FROM @Year_Tab yt)T2,(SELECT qt.Quarter_Id FROM @Quarter_Tab qt )T3
DECLARE RESULT_CURSOR CURSOR
FOR
SELECT * FROM @TabALL ta
OPEN RESULT_CURSOR
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
WHILE @@FETCH_STATUS = 0
BEGIN
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
IF @DistrictID=0
BEGIN
SET @DistrictID=NULL;
END
IF @YearID=0
BEGIN
SET @YearID=NULL;
END
IF @QuarterID=0
BEGIN
SET @DistrictID=NULL;
END
INSERT INTO @Tab2
SELECT Cte2.Target,Cte2.Achieved ,t. * FROM
(
SELECT QuestionTarget.Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_FormMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS Target,CTE.Achieved AS Achieved FROM QuestionTarget
FULL OUTER JOIN
(SELECT Question_ID,Sum(ISNULL(S.QTotal,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved FROM AnswersNew AS S
WHERE
(@YearID IS NULL OR ( S.Year=@YearID)) AND
(@QuarterID IS NULL OR( S.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR(S.DistrictId =@DistrictID))
AND (@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY Question_ID)CTE
ON
CTE.Question_ID=QuestionTarget.Question_ID
WHERE
(@YearID IS NULL OR ( dbo.QuestionTarget.Year=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.District=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY QuestionTarget.Question_ID,CTE.Achieved
)Cte2 , @Tab t
DELETE FROM @Tab;
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
END
CLOSE RESULT_CURSOR
DEALLOCATE RESULT_CURSOR
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+ t.District FROM @Tab2 t WHERE t.District!='ALL'
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t WHERE t.year !='ALL'
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t WHERE t.Quarter!='ALL'
DELETE FROM @Tab
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, -- Year - Nvarchar
@Quarter_, -- Quarter - Nvarchar
@District_, -- District - Nvarchar
@QuestionText_ -- QuestionText - NVarchar
)
IF @Year_ IS NULL
BEGIN
SET @Year_='ALL'
END
IF @District_ IS NULL
BEGIN
SET @District_='ALL'
END
IF @Quarter_ IS NULL
BEGIN
SET @Quarter_='ALL'
END
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Pankaj Kumar ChoudharyPosted Sep 15, 2015, 2:06 PM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_Test] Script Date: 09/15/2015 21:37:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_Test](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [int]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @TabALL TABLE
(
[District] int ,
[Year] int ,
[Quarter] int
)
DECLARE @Year_Tab TABLE
(
Year_Id int
)
DECLARE @Quarter_Tab TABLE
(
Quarter_Id int
)
DECLARE @District_Tab TABLE
(
District_Id int
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int];
DECLARE @EndIndex1 INT;
SET @StartIndex=1;
DECLARE @Str [nvarchar](max);
IF @DistrictStr IS NOT NULL
BEGIN
SET @DistrictStr=@DistrictStr+',';
WHILE CHARINDEX(',', @DistrictStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @Str=SUBSTRING(@DistrictStr,1,@EndIndex1-1)
INSERT INTO @District_Tab VALUES (@Str)
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
END
END
ELSE
BEGIN
INSERT INTO @District_Tab VALUES (NULL)
END
IF @QuarterStr IS NOT NULL
BEGIN
SET @QuarterStr=@QuarterStr+',';
WHILE CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @QuarterStr);
SET @Str=SUBSTRING(@QuarterStr,1,@EndIndex1-1)
INSERT INTO @Quarter_Tab VALUES (@Str)
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex1 + 1, LEN(@QuarterStr))
END
END
ELSE
BEGIN
INSERT INTO @Quarter_Tab VALUES (NULL)
END
IF @YearStr IS NOT NULL
BEGIN
SET @YearStr=@YearStr+',';
WHILE CHARINDEX(',', @YearStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @YearStr);
SET @Str=SUBSTRING(@YearStr,1,@EndIndex1-1)
INSERT INTO @Year_Tab VALUES (@Str)
SET @YearStr=SUBSTRING(@YearStr, @EndIndex1 + 1, LEN(@YearStr))
END
END
ELSE
BEGIN
INSERT INTO @Year_Tab VALUES(NULL)
END
INSERT INTO @TabALL
SELECT * FROM (SELECT dt.District_Id FROM @District_Tab dt)T1,(SELECT yt.Year_Id FROM @Year_Tab yt)T2,(SELECT qt.Quarter_Id FROM @Quarter_Tab qt )T3
DECLARE RESULT_CURSOR CURSOR
FOR
SELECT * FROM @TabALL ta
OPEN RESULT_CURSOR
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
WHILE @@FETCH_STATUS = 0
BEGIN
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
IF @DistrictID=0
BEGIN
SET @DistrictID=NULL;
END
IF @YearID=0
BEGIN
SET @YearID=NULL;
END
IF @QuarterID=0
BEGIN
SET @QuarterID=NULL;
END
INSERT INTO @Tab2
SELECT Cte2.Target,Cte2.Achieved ,t. * FROM
(
SELECT QuestionTarget.Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_FormMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS Target,CTE.Achieved AS Achieved FROM QuestionTarget
FULL OUTER JOIN
(SELECT Question_ID,Sum(ISNULL(S.QTotal,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved FROM AnswersNew AS S
WHERE
(@YearID IS NULL OR ( S.Year=@YearID)) AND
(@QuarterID IS NULL OR( S.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR(S.DistrictId =@DistrictID))
AND (@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY Question_ID)CTE
ON
CTE.Question_ID=QuestionTarget.Question_ID
WHERE
(@YearID IS NULL OR ( dbo.QuestionTarget.Year=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.District=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY QuestionTarget.Question_ID,CTE.Achieved
)Cte2 , @Tab t
DELETE FROM @Tab;
FETCH NEXT FROM RESULT_CURSOR INTO @DistrictID ,@YearID,@QuarterID
END
CLOSE RESULT_CURSOR
DEALLOCATE RESULT_CURSOR
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+ t.District FROM @Tab2 t WHERE t.District!='ALL'
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t WHERE t.year !='ALL'
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t WHERE t.Quarter!='ALL'
DELETE FROM @Tab
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, -- Year - Nvarchar
@Quarter_, -- Quarter - Nvarchar
@District_, -- District - Nvarchar
@QuestionText_ -- QuestionText - NVarchar
)
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Pankaj Kumar ChoudharyPosted Sep 15, 2015, 10:36 AM
Danish HabibPosted Sep 15, 2015, 6:44 AM
Pankaj Kumar ChoudharyPosted Sep 14, 2015, 9:00 AM
Achieved 2+21+6+0=29
which is correct
as you asked that
please tell me when u are giving multiple values like for Quarter1,2 did u fetching the records from answersnew table and quarter table where Quarter=1 or Quarter=2 or u are using where Quarter=1 AND quarter=2
Here i am calculate result first for Quarter1 then Quarter 2 and insert into Table @Tab3 but retrieve as sum of both result.
Please check this
I can also modify this stored procedure
Like District , Year , Quarter contain duplicate values like 2015,2015,2015,2015 and Quater1,quarter2,Quarter1,Quarter2
i can retrieve unique result.
i can modify this stored procedure if you want to provide multiple question like.
QuestionID=1,2,3
Please check this and Reply me if this is not correct or you want apply any modification......
Now Year column doesn't contain "ALL" text.
Last modified stored procedure is
USE [planrmbeDb2]
GO
/****** Object: StoredProcedure [dbo].[usp_Target_Test] Script Date: 09/14/2015 15:40:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_Test](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [int]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int], @EndIndex1 INT;
DECLARE @EndIndex2 INT;
DECLARE @EndIndex3 INT;
SET @StartIndex=1;
WHILE CHARINDEX(',', @DistrictStr) > 0 OR CHARINDEX(',', @YearStr) > 0 OR CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @EndIndex2 = CHARINDEX(',', @YearStr);
SET @EndIndex3 = CHARINDEX(',', @QuarterStr);
SET @DistrictID=NULL;
SET @QuarterID=NULL;
SET @YearID=NULL;
IF @EndIndex1>1
BEGIN
SET @DistrictID= (SELECT CONVERT([int],SUBSTRING(@DistrictStr, @StartIndex, @EndIndex1-1)))
END
IF @EndIndex3>1
BEGIN
SET @QuarterID= ( SELECT CONVERT([int],SUBSTRING(@QuarterStr, @StartIndex, @EndIndex3-1)))
END
IF @EndIndex2>1
BEGIN
SET @YearID=( SELECT CONVERT([int],SUBSTRING(@YearStr, @StartIndex, @EndIndex2-1)))
END
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
INSERT INTO @Tab2
SELECT Cte2.Target,Cte2.Achieved ,t. * FROM
(
SELECT QuestionTarget.Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_FormMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS Target,CTE.Achieved AS Achieved FROM QuestionTarget
FULL OUTER JOIN
(SELECT Question_ID,Sum(ISNULL(S.QTotal,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved FROM AnswersNew AS S
WHERE
(@YearID IS NULL OR ( S.Year=@YearID)) AND
(@QuarterID IS NULL OR( S.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR(S.DistrictId =@DistrictID))
AND (@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY Question_ID)CTE
ON
CTE.Question_ID=QuestionTarget.Question_ID
WHERE
(@YearID IS NULL OR ( dbo.QuestionTarget.Year=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.District=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY QuestionTarget.Question_ID,CTE.Achieved
)Cte2 , @Tab t
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
SET @YearStr=SUBSTRING(@YearStr, @EndIndex2 + 1, LEN(@YearStr))
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex3 + 1, LEN(@QuarterStr))
DELETE FROM @Tab;
END
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+ t.District FROM @Tab2 t WHERE t.District!='ALL'
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t WHERE t.year !='ALL'
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t WHERE t.Quarter!='ALL'
DELETE FROM @Tab
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, -- Year - Nvarchar
@Quarter_, -- Quarter - Nvarchar
@District_, -- District - Nvarchar
@QuestionText_ -- QuestionText - NVarchar
)
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Pankaj Kumar ChoudharyPosted Sep 14, 2015, 8:56 AM
QuestionID=1
Result for District=1 , Year=5, Quarter=1
Result for District=1 , Year=5, Quarter=2
Result for District=9 , Year=5, Quarter=1
Result for District=9 , Year=5, Quarter=2
You can check that this result is little different form your result
Your result showing 6 instead of NULL but this is correct result according my table
You can see that there is not any result in Answer Table for
There is not any data in my AnswerNew table.
if I compute a combine result then it will be below
Danish HabibPosted Sep 14, 2015, 5:31 AM
Danish HabibPosted Sep 14, 2015, 4:30 AM
Pankaj Kumar ChoudharyPosted Sep 13, 2015, 10:46 PM
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int], @EndIndex1 INT;
DECLARE @EndIndex2 INT;
DECLARE @EndIndex3 INT;
SET @StartIndex=1;
WHILE CHARINDEX(',', @DistrictStr) > 0 OR CHARINDEX(',', @YearStr) > 0 OR CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @EndIndex2 = CHARINDEX(',', @YearStr);
SET @EndIndex3 = CHARINDEX(',', @QuarterStr);
SET @DistrictID=NULL;
SET @QuarterID=NULL;
SET @YearID=NULL;
IF @EndIndex1>1
BEGIN
SET @DistrictID= (SELECT CONVERT([int],SUBSTRING(@DistrictStr, @StartIndex, @EndIndex1-1)))
END
IF @EndIndex3>1
BEGIN
SET @QuarterID= ( SELECT CONVERT([int],SUBSTRING(@QuarterStr, @StartIndex, @EndIndex3-1)))
END
IF @EndIndex2>1
BEGIN
SET @YearID=( SELECT CONVERT([int],SUBSTRING(@YearStr, @StartIndex, @EndIndex2-1)))
END
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.Districts d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
INSERT INTO @Tab2
SELECT Cte2.Target,Cte2.Achieved ,t. * FROM
(
SELECT QuestionTarget.Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_FormMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS Target,CTE.Achieved AS Achieved FROM QuestionTarget
FULL OUTER JOIN
(SELECT Question_ID,Sum(ISNULL(S.QTotal,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved FROM AnswersNew AS S
WHERE
(@YearID IS NULL OR ( S.Year=@YearID)) AND
(@QuarterID IS NULL OR( S.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR(S.DistrictId =@DistrictID))
AND (@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY Question_ID)CTE
ON
CTE.Question_ID=QuestionTarget.Question_ID
WHERE
(@YearID IS NULL OR ( dbo.QuestionTarget.Year=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.Quarter=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.District=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY QuestionTarget.Question_ID,CTE.Achieved
)Cte2 , @Tab t
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
SET @YearStr=SUBSTRING(@YearStr, @EndIndex2 + 1, LEN(@YearStr))
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex3 + 1, LEN(@QuarterStr))
DELETE FROM @Tab;
END
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+t.District FROM @Tab2 t
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Danish HabibPosted Sep 12, 2015, 1:27 AM
Danish HabibPosted Sep 12, 2015, 1:22 AM
Danish HabibPosted Sep 11, 2015, 6:35 PM
Danish HabibPosted Sep 11, 2015, 7:19 AM
Pankaj Kumar ChoudharyPosted Sep 11, 2015, 7:00 AM
Danish HabibPosted Sep 11, 2015, 6:33 AM
Danish HabibPosted Sep 11, 2015, 2:44 AM
Pankaj Kumar ChoudharyPosted Sep 10, 2015, 8:14 PM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_AchieveThird] Script Date: 09/10/2015 11:12:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_AchieveThird](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [bigint]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int], @EndIndex1 INT;
DECLARE @EndIndex2 INT;
DECLARE @EndIndex3 INT;
SET @StartIndex=1;
WHILE CHARINDEX(',', @DistrictStr) > 0 OR CHARINDEX(',', @YearStr) > 0 OR CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @EndIndex2 = CHARINDEX(',', @YearStr);
SET @EndIndex3 = CHARINDEX(',', @QuarterStr);
SET @DistrictID=NULL;
SET @QuarterID=NULL;
SET @YearID=NULL;
IF @EndIndex1>1
BEGIN
SET @DistrictID= (SELECT CONVERT([int],SUBSTRING(@DistrictStr, @StartIndex, @EndIndex1-1)))
END
IF @EndIndex3>1
BEGIN
SET @QuarterID= ( SELECT CONVERT([int],SUBSTRING(@QuarterStr, @StartIndex, @EndIndex3-1)))
END
IF @EndIndex2>1
BEGIN
SET @YearID=( SELECT CONVERT([int],SUBSTRING(@YearStr, @StartIndex, @EndIndex2-1)))
END
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
INSERT INTO @Tab2
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
INNER Join
(SELECT Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
WHERE
(
@YearID IS NULL OR ( dbo.QuestionTarget.YearID=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.QuarterID=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.DistrictID=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
(@DistrictID IS NULL OR( S.DistrictID=@DistrictID)) AND
(@YearID IS NULL OR( S.YearID=@YearID)) AND
(@QuarterID IS NULL OR( S.QuarterID=@QuarterID) )AND
(@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
SET @YearStr=SUBSTRING(@YearStr, @EndIndex2 + 1, LEN(@YearStr))
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex3 + 1, LEN(@QuarterStr))
DELETE FROM @Tab;
END
set @District_=Null;
set @Year_=NULL
set @Quarter_=null;
SELECT @District_=COALESCE(@District_+',',' ')+t.District FROM @Tab2 t
SELECT @Year_=COALESCE(@Year_+',',' ')+t.[Year] FROM @Tab2 t
SELECT @Quarter_=COALESCE(@Quarter_+',',' ')+t.Quarter FROM @Tab2 t
SELECT Tab3.Targer,Tab3.Achieved, @District_ AS 'District',@Year_ AS 'Year',@Quarter_ AS 'Quarter', Tab3.QuestionText FROM
(SELECT SUM( t.Target) AS [Targer], SUM(t.Achieved) as [Achieved] , t.QuestionText FROM @Tab2 t GROUP BY t.QuestionText)Tab3;
END
Danish HabibPosted Sep 10, 2015, 1:09 PM
Danish HabibPosted Sep 10, 2015, 1:08 PM
Danish HabibPosted Sep 10, 2015, 10:48 AM
Pankaj Kumar ChoudharyPosted Sep 10, 2015, 7:32 AM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_AchieveThird] Script Date: 09/10/2015 11:12:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_AchieveThird](@DistrictStr Nvarchar(max)=NULL,@YearStr [nvarchar](max)= NULL, @QuarterStr [nvarchar](max)=NULL,@QuestionID [bigint]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Tab2 TABLE
(
[Target] [int],
[Achieved] [int],
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
DECLARE @DistrictID [int];
DECLARE @QuarterID [int];
DECLARE @YearID [int];
DECLARE @StartIndex [int], @EndIndex1 INT;
DECLARE @EndIndex2 INT;
DECLARE @EndIndex3 INT;
SET @StartIndex=1;
WHILE CHARINDEX(',', @DistrictStr) > 0 OR CHARINDEX(',', @YearStr) > 0 OR CHARINDEX(',', @QuarterStr) > 0
BEGIN
SET @EndIndex1 = CHARINDEX(',', @DistrictStr);
SET @EndIndex2 = CHARINDEX(',', @YearStr);
SET @EndIndex3 = CHARINDEX(',', @QuarterStr);
SET @DistrictID=NULL;
SET @QuarterID=NULL;
SET @YearID=NULL;
IF @EndIndex1>1
BEGIN
SET @DistrictID= (SELECT CONVERT([int],SUBSTRING(@DistrictStr, @StartIndex, @EndIndex1-1)))
END
IF @EndIndex3>1
BEGIN
SET @QuarterID= ( SELECT CONVERT([int],SUBSTRING(@QuarterStr, @StartIndex, @EndIndex3-1)))
END
IF @EndIndex2>1
BEGIN
SET @YearID=( SELECT CONVERT([int],SUBSTRING(@YearStr, @StartIndex, @EndIndex2-1)))
END
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
INSERT INTO @Tab2
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
INNER Join
(SELECT Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
WHERE
(
@YearID IS NULL OR ( dbo.QuestionTarget.YearID=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.QuarterID=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.DistrictID=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
(@DistrictID IS NULL OR( S.DistrictID=@DistrictID)) AND
(@YearID IS NULL OR( S.YearID=@YearID)) AND
(@QuarterID IS NULL OR( S.QuarterID=@QuarterID) )AND
(@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
SET @DistrictStr=SUBSTRING(@DistrictStr, @EndIndex1 + 1, LEN(@DistrictStr))
SET @YearStr=SUBSTRING(@YearStr, @EndIndex2 + 1, LEN(@YearStr))
SET @QuarterStr=SUBSTRING(@QuarterStr, @EndIndex3 + 1, LEN(@QuarterStr))
DELETE FROM @Tab;
END
SELECT * FROM @Tab2 t;
END
Danish HabibPosted Sep 10, 2015, 4:03 AM
Pankaj Kumar ChoudharyPosted Sep 10, 2015, 2:13 AM
Danish HabibPosted Sep 3, 2015, 1:32 AM
Pankaj Kumar ChoudharyPosted Sep 2, 2015, 7:52 PM
Danish HabibPosted Sep 2, 2015, 2:46 PM
Pankaj Kumar ChoudharyPosted Sep 2, 2015, 12:20 PM
Danish HabibPosted Sep 2, 2015, 6:18 AM
Danish HabibPosted Sep 2, 2015, 12:38 AM
Danish HabibPosted Sep 2, 2015, 12:25 AM
Pankaj Kumar ChoudharyPosted Sep 1, 2015, 2:59 PM
Pankaj Kumar ChoudharyPosted Sep 1, 2015, 2:39 PM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_AchieveThird] Script Date: 09/01/2015 22:03:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_AchieveThird](@DistrictID [int] = NULL,@YearID [int]=NULL, @QuarterID [int]=NULL,@QuestionID [bigint]=NULL)
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
DECLARE @Year_ Nvarchar(max)
DECLARE @Quarter_ Nvarchar(max)
DECLARE @District_ Nvarchar(max)
DECLARE @QuestionText_ NVarchar(max)
if(@DistrictID=Null AND @QuarterID=NULL AND @YearID=NULL AND @QuestionID=NULL)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
END
ELSE
BEGIN
SET @Quarter_='ALL'
SET @District_='ALL'
SET @Year_='ALL'
SET @QuestionText_='ALL'
IF EXISTS(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
BEGIN
SET @Year_=(SELECT y.Year_Name FROM dbo.[Year] y WHERE y.Year_ID=@YearID)
END
IF EXISTS(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
BEGIN
SET @District_=(SELECT d.DistrictName from dbo.District d WHERE d.DistrictID=@DistrictID)
END
IF EXISTS(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
BEGIN
SET @Quarter_=(SELECT q.Quarter_Name from dbo.Quarter q WHERE q.Quarter_ID=@QuarterID)
END
IF EXISTS(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
BEGIN
SET @QuestionText_=(SELECT q.QuestionText from dbo.Questions q WHERE q.QuestionIds=@QuestionID)
END
INSERT INTO @Tab
(
[Year],
Quarter,
District,
QuestionText
)
VALUES
(
@Year_, @Quarter_,@District_,@QuestionText_
)
END
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
WHERE
(
@YearID IS NULL OR ( dbo.QuestionTarget.YearID=@YearID)) AND
(@QuarterID IS NULL OR( dbo.QuestionTarget.QuarterID=@QuarterID)) AND
(@DistrictID IS NULL OR( dbo.QuestionTarget.DistrictID=@DistrictID))
AND (@QuestionID IS NULL OR ( dbo.QuestionTarget.Question_ID=@QuestionID))
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
(@DistrictID IS NULL OR( S.DistrictID=@DistrictID)) AND
(@YearID IS NULL OR( S.YearID=@YearID)) AND
(@QuarterID IS NULL OR( S.QuarterID=@QuarterID) )AND
(@QuestionID IS NULL OR ( S.Question_ID=@QuestionID))
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
Danish HabibPosted Sep 1, 2015, 12:41 PM
Pankaj Kumar ChoudharyPosted Sep 1, 2015, 12:32 PM
Danish HabibPosted Sep 1, 2015, 8:17 AM
Danish HabibPosted Aug 29, 2015, 6:00 AM
Danish HabibPosted Aug 28, 2015, 10:41 AM
Pankaj Kumar ChoudharyPosted Aug 28, 2015, 8:45 AM
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
if(@DistrictID=0 AND @QuarterID=0 AND @YearID=0 AND @QuestionID=0)
BEGIN
INSERT INTO @Tab VALUES('ALL','ALL','ALL','ALL')
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID ,Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
ELSE
BEGIN
INSERT INTO @Tab
SELECT [Year] =y.Year_Name,
[Quarter]=q.Quarter_Name
,District=DistrictName
,QuestionText=QuestionText
FROM dbo.District d , dbo.[Year] y , dbo.Quarter q , dbo.Questions QT
WHERE d.DistrictId=@DistrictID AND y.Year_ID= @YearID AND q.Quarter_ID=@QuarterID AND QT.QuestionIds=@QuestionID
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
WHERE
dbo.QuestionTarget.YearID=@YearID AND
dbo.QuestionTarget.QuarterID=@QuarterID AND
dbo.QuestionTarget.DistrictID=@DistrictID
AND dbo.QuestionTarget.Question_ID=@QuestionID
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
S.DistrictID=@DistrictID AND
S.YearID=@YearID AND
S.QuarterID=@QuarterID AND
S.Question_ID=@QuestionID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
END
Pankaj Kumar ChoudharyPosted Aug 28, 2015, 8:06 AM
Pankaj Kumar ChoudharyPosted Aug 28, 2015, 8:06 AM
Danish HabibPosted Aug 28, 2015, 5:39 AM
Pankaj Kumar ChoudharyPosted Aug 27, 2015, 8:20 PM
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max),
[QuestionText] NVarchar(max)
)
INSERT INTO @Tab
SELECT [Year] =CASE(y.Year_ID)
WHEN 0 THEN 'ALL'
ELSE
y.Year_Name
END , [Quarter]=CASE(q.Quarter_ID)
WHEN 0 THEN 'ALL'
ELSE
q.Quarter_Name
END ,District=CASE(d.DistrictId)
WHEN 0 THEN 'ALL'
ELSE
DistrictName
END ,QuestionText=CASE(QT.QuestionIds)
When 0 Then 'ALL'
Else
QuestionText
END FROM dbo.District d , dbo.[Year] y , dbo.Quarter q , dbo.Questions QT
WHERE d.DistrictId=@DistrictID AND y.Year_ID= @YearID AND q.Quarter_ID=@QuarterID AND QT.QuestionIds=@QuestionID
if(@DistrictID=0 AND @QuarterID=0 AND @YearID=0 AND @QuestionID=0)
BEGIN
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID ,Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
ELSE
BEGIN
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForBoy,0)) + Sum(ISNULL(QT_ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(QuestionTarget,0)) + Sum(ISNULL(QT_ForMen,0))+ Sum(ISNULL(QT_ForWomen,0)) +Sum(ISNULL(QT_ForGirl,0)) + Sum(ISNULL(QT_ForBoy,0)) AS "Target" FROM QuestionTarget
WHERE
dbo.QuestionTarget.YearID=@YearID AND
dbo.QuestionTarget.QuarterID=@QuarterID AND
dbo.QuestionTarget.DistrictID=@DistrictID
AND dbo.QuestionTarget.Question_ID=@QuestionID
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
S.DistrictID=@DistrictID AND
S.YearID=@YearID AND
S.QuarterID=@QuarterID AND
S.Question_ID=@QuestionID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
END
Danish HabibPosted Aug 27, 2015, 2:52 PM
Danish HabibPosted Aug 27, 2015, 2:51 PM
Danish HabibPosted Aug 27, 2015, 2:50 PM
Danish HabibPosted Aug 27, 2015, 2:50 PM
Danish HabibPosted Aug 27, 2015, 2:49 PM
Danish HabibPosted Aug 27, 2015, 2:48 PM
Pankaj Kumar ChoudharyPosted Aug 27, 2015, 7:33 AM
GO
/****** Object: StoredProcedure [dbo].[usp_Target_Achieve] Script Date: 08/27/2015 16:40:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_Target_Achieve](@DistrictID [int],@YearID [int], @QuarterID [int])
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max)
)
INSERT INTO @Tab
SELECT [Year] =CASE(y.YearID)
WHEN 0 THEN 'ALL'
ELSE
y.YearName
END , [Quarter]=CASE(q.QuarterID)
WHEN 0 THEN 'ALL'
ELSE
q.QuarterName
END ,District=CASE(d.DistrictID)
WHEN 0 THEN 'ALL'
ELSE
DistrictName
END FROM dbo.District d , dbo.[Year] y , dbo.Quarter q
WHERE d.DistrictID=@DistrictID AND y.YearID= @YearID AND q.QuarterID=@QuarterID
if(@DistrictID=0 AND @QuarterID=0 AND @YearID=0)
BEGIN
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(TargetValue,0)) + Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS "Target" FROM QuestionTarget
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
ELSE
BEGIN
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(TargetValue,0)) + Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS "Target" FROM QuestionTarget
WHERE
dbo.QuestionTarget.YearID=@YearID AND
dbo.QuestionTarget.QuarterID=@QuarterID AND
dbo.QuestionTarget.DistrictID=@DistrictID
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
S.DistrictID=@DistrictID AND
S.YearID=@YearID AND
S.QuarterID=@QuarterID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
END
Danish HabibPosted Aug 27, 2015, 6:06 AM
Danish HabibPosted Aug 27, 2015, 4:51 AM
Pankaj Kumar ChoudharyPosted Aug 27, 2015, 4:33 AM
AS
BEGIN
DECLARE @Tab TABLE
(
[Year] Nvarchar(max),
[Quarter] Nvarchar(max),
[District] Nvarchar(max)
)
INSERT INTO @Tab
SELECT [Year] =CASE(y.YearID)
WHEN 0 THEN 'ALL'
ELSE
y.YearName
END , [Quarter]=CASE(q.QuarterID)
WHEN 0 THEN 'ALL'
ELSE
q.QuarterName
END ,District=CASE(d.DistrictID)
WHEN 0 THEN 'ALL'
ELSE
DistrictName
END FROM dbo.District d , dbo.[Year] y , dbo.Quarter q
WHERE d.DistrictID=@DistrictID AND y.YearID= @YearID AND q.QuarterID=@QuarterID
SELECT * FROM
(
SELECT SUM(Target) Target , Sum(Achieved) Achieved FROM
(SELECT Sum(ISNULL(S.Achieved,0))+ Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(ISNULL(TargetValue,0)) + Sum(ISNULL(ForMen,0))+ Sum(ISNULL(ForWomen,0)) +Sum(ISNULL(ForBoy,0)) + Sum(ISNULL(ForGirl,0)) AS "Target" FROM QuestionTarget
WHERE
dbo.QuestionTarget.YearID=@YearID AND
dbo.QuestionTarget.QuarterID=@QuarterID AND
dbo.QuestionTarget.DistrictID=@DistrictID
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
WHERE
S.DistrictID=@DistrictID AND
S.YearID=@YearID AND
S.QuarterID=@QuarterID
GROUP BY CTE.Question_ID)Cte1
)Cte2 , @Tab t
END
Pankaj Kumar ChoudharyPosted Aug 27, 2015, 4:24 AM
Danish HabibPosted Aug 27, 2015, 3:24 AM
Danish HabibPosted Aug 27, 2015, 2:35 AM
Danish HabibPosted Aug 27, 2015, 2:28 AM
Pankaj Kumar ChoudharyPosted Aug 26, 2015, 11:19 PM
Danish HabibPosted Aug 26, 2015, 5:03 PM
Danish HabibPosted Aug 26, 2015, 4:44 PM
Pankaj Kumar ChoudharyPosted Aug 26, 2015, 3:20 PM
Danish HabibPosted Aug 26, 2015, 3:15 PM
Danish HabibPosted Aug 26, 2015, 3:12 PM
Pankaj Kumar ChoudharyPosted Aug 26, 2015, 3:10 PM
(SELECT Sum(Achieved) + Sum([Achieved(For_Men)]) + Sum([Achieved(For_WoMen)]) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew1 AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(TargetValue) + SUM([Target(for_MEN)])+ SUM([Target(for_WoMEN)]) +SUM([Target(for_Boy)]) AS "Target" FROM QuestionTarget1
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
Pankaj Kumar ChoudharyPosted Aug 26, 2015, 3:04 PM
(SELECT Sum(Achieved) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew1 AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(TargetValue) + SUM([Target(for_MEN)])AS "Target" FROM QuestionTarget1
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
Danish HabibPosted Aug 26, 2015, 1:51 PM
Pankaj Kumar ChoudharyPosted Aug 26, 2015, 12:33 PM
Danish HabibPosted Aug 26, 2015, 11:24 AM
Danish HabibPosted Aug 26, 2015, 1:18 AM
Pankaj Kumar ChoudharyPosted Aug 25, 2015, 11:35 PM
(SELECT Sum(Achieved) AS Achieved , SUM(DISTINCT( Target)) AS Target FROM AnswersNew1 AS S
RIGHT OUTER Join
(SELECT Question_ID , Sum(TargetValue) AS "Target" FROM QuestionTarget1
GROUP BY Question_ID )CTE
ON
CTE.Question_ID=S.Question_ID
GROUP BY CTE.Question_ID)Cte1
Danish HabibPosted Aug 25, 2015, 3:11 PM
Danish HabibPosted Aug 22, 2015, 2:33 PM
Danish HabibPosted Aug 22, 2015, 10:39 AM
Pankaj Kumar ChoudharyPosted Aug 22, 2015, 9:25 AM
( select SUM(Distinct(f.TargetValue)) as TARGET , SUM(S.Achieved) as ACHIEVED from QuestionTarget1 F
Left Outer JOIN AnswersNew1 AS S ON
S.Question_ID=F.Question_ID
Group By F.Question_ID)cte
Danish HabibPosted Aug 22, 2015, 2:14 AM
Hemlata KushwahaPosted Aug 22, 2015, 2:13 AM
Danish HabibPosted Aug 22, 2015, 1:40 AM
Pankaj Kumar ChoudharyPosted Aug 21, 2015, 8:37 PM
INNER JOIN AnswersNew AS S ON S.Question_ID=F.Question_ID
GROUP BY F.Question_ID
)cte
Danish HabibPosted Aug 21, 2015, 1:22 PM
Danish HabibPosted Aug 21, 2015, 12:37 PM
Danish HabibPosted Aug 21, 2015, 12:17 PM
Pankaj Kumar ChoudharyPosted Aug 21, 2015, 8:59 AM
from Questions as Q
inner join
(SELECT s.Question_ID, sum(f.QuestionTarget+f.QT_ForBoy+f.QT_ForGirl+f.QT_ForWomen+f.QT_FormMen) as QuestionTarget , sum(S.QTotal +S.QT_ForBoy+s.QT_ForGirl+S.QT_ForMen+S.QT_ForWomen) as QuestionAchieved FROM QuestionTarget F
INNER JOIN AnswersNew AS S ON S.Question_ID=F.Question_ID
group by s.Question_ID)Cte
on
Cte.Question_ID=Q.QuestionIds
where Q.QuestionText=N'Your Text'
Danish HabibPosted Aug 21, 2015, 3:47 AM
Hemlata KushwahaPosted Aug 21, 2015, 2:46 AM
Pankaj Kumar ChoudharyPosted Aug 20, 2015, 8:49 AM
INNER JOIN AnswersNew AS S ON S.Question_ID=F.Question_ID
GROUP BY F.Question_ID
)cte
Danish HabibPosted Aug 20, 2015, 6:58 AM
Upendra Pratap ShahiPosted Aug 20, 2015, 6:36 AM
Danish HabibPosted Aug 20, 2015, 6:30 AM
Hemlata KushwahaPosted Aug 20, 2015, 6:16 AM
Danish HabibPosted Aug 20, 2015, 6:00 AM
Danish HabibPosted Aug 20, 2015, 5:44 AM
Upendra Pratap ShahiPosted Aug 20, 2015, 4:53 AM
SELECT SUM(AchievedValue) AS ACHIEVEDRecord,TargetValue AS TARGETRecord
FROM test1
INNER JOIN test2 on test2.QuestionID=test1.QuestionID
group by test1.QuestionID, test1.TargetValue
Danish HabibPosted Aug 20, 2015, 4:21 AM
Upendra Pratap ShahiPosted Aug 20, 2015, 3:32 AM
SELECT SUM(AchievedValue) AS ACHIEVEDRecord,SUM(TargetValue) AS TARGETRecord
FROM test1
INNER JOIN test2 on test2.QuestionID=test1.QuestionID
group by test1.QuestionID, test2.RecordId
Danish HabibPosted Aug 20, 2015, 2:12 AM
Pankaj Kumar ChoudharyPosted Aug 19, 2015, 1:39 PM
LEFT OUTER JOIN Second AS S ON S.QuestionID=F.QuestionID
Where 1=1
group by S.RecordID)cte
Pankaj Kumar ChoudharyPosted Aug 19, 2015, 1:35 PM
INNER JOIN Second AS S ON S.QuestionID=F.QuestionID
Where 1=1
group by S.RecordID)cte
Danish HabibPosted Aug 19, 2015, 11:11 AM
Ramesh MaruthiPosted Aug 19, 2015, 11:03 AM
Danish HabibPosted Aug 19, 2015, 10:35 AM
Danish HabibPosted Aug 19, 2015, 10:28 AM
Sumit JoshiPosted Aug 19, 2015, 9:35 AM
Ramesh MaruthiPosted Aug 19, 2015, 9:26 AM
Manas MohapatraPosted Aug 19, 2015, 7:55 AM