;WITH CTE AS (
SELECT
rd.RowName,
rd.UomName,
ptemp.Value,
ptemp.line,
ptemp.TargetAndRangeStatus,
ROW_NUMBER() OVER (ORDER BY RowName,line) RN,
ptemp.ID,
rd.ProductionResponseID
from @PRTemp ptemp
LEFT JOIN @Report rd ON ptemp.ID =rd.ProductionResponseID
AND rd.ColumnDisplayOrder IN (1,2)
insert into @ProductionResponseProduction
SELECT CASE
WHEN RN % 6 = 0 THEN 6
ELSE RN % 6 END AS ID,
RowName,
UomName,
Value,
line,
TargetAndRangeStatus,
0,
0,
ID
FROM CTE CC
ORDER BY CC.RowName,CC.line
DECLARE @Production TABLE (
[SNo] [int] IDENTITY(1,1) NOT NULL,
[RowName] [nvarchar](500) NULL,
[Uom] [nvarchar](50) NULL,
[Line1Shift1] [float] NULL,
[Line1Shift2] [float] NULL,
[Line1Shift3] [float] NULL,
[Line1Total] DECIMAL(18,5) NULL,
[Line2Shift1] [float] NULL,
[Line2Shift2] [float] NULL,
[Line2Shift3] [float] NULL,
[Line2Total] DECIMAL(18,5) NULL,
[StartDate] [datetime] NOT NULL,
[EndDate] [datetime] NOT NULL,
[SectionName] [nvarchar](50) NOT NULL,
[TargetAndRangeColor] [nvarchar](max) NULL,
[IsBold] [int] NULL,
[Padding] [int] NULL
)
INSERT INTO @Production
select
ParameterName,
UoM,
ISNULL([1],0) AS Line1Shift1,
ISNULL([2],0) AS Line1Shift2,
ISNULL([3],0) AS Line1Shift3,
case --when [ParameterName] =@ParamName THEN NULL
when ( [ParameterName] = @ParamName OR [ParameterName] = @ParamName3 OR [ParameterName]=@ParamName4 OR [ParameterName]=@ParamName5) THEN
CAST (AVG(( [1] + [2] + [3])) as DECIMAL(18,5))/3
ELSE
SUM( ISNULL([1],0) + ISNULL([2],0) + ISNULL([3],0)) END as Line1Total,
ISNULL([4],0) AS Line2Shift1,
ISNULL([5],0) AS Line2Shift2,
ISNULL([6],0) AS Line2Shift3,
case --when [ParameterName] =@ParamName THEN NULL
when ( [ParameterName] = @ParamName OR [ParameterName] = @ParamName3 OR [ParameterName]=@ParamName4 OR [ParameterName]=@ParamName5) THEN
-- CAST (AVG(( ISNULL([4],0) + ISNULL([5],0) + ISNULL([6],0))) as DECIMAL(18,2))/3
CAST (AVG(( [4] + [5] + [6])) as DECIMAL(18,5))/3
ELSE
SUM( ISNULL([4],0) + ISNULL([5],0) + ISNULL([6],0)) END as Line2Total,
@DayPeriod.GregorianStartDate AS StartDate,
@DayPeriod.GregorianEndDate AS EndDate,
'Production' as SectionName,
CASE TargetAndRangeStatus
WHEN 1 THEN @YellowColor
WHEN 2 THEN @RedColor
ELSE @WhiteColor
END AS TargetAndRangeColor,
IsBold,
Padding
from
(
select
PRD.RowID,
PRD.Value,
PRD.ParameterName,
PRD.UoM,
TargetAndRangeStatus,
IsBold,
Padding
from @ResponseProduction PRD
) d
pivot
(
MAX(value)
FOR RowID IN ([1],[2],[3],[4],[5],[6])
) piv
GROUP BY
ParameterName,
UoM,
piv.[1],
piv.[2],
piv.[3],
piv.[4],
piv.[5],
piv.[6],
piv.[IsBold],
piv.Padding,
piv.TargetAndRangeStatus
ORDER BY ParameterName
Thanks Erland. Query is mentioned above. I would be thankful if you can include the logic in the PIVOT query itself.
Sunday, April 27, 2014
Find AVG : Exclude values which are 0 while finding AVG
Labels:
big loop My VS C#
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment