【发布时间】:2014-03-20 20:15:38
【问题描述】:
我试图在下面的代码中实现 if else 语句或 case 语句。我想使用这些语句之一(如果或案例)来查看我的 RT_Ch_Pres_PX1 值是否在特定的最小或最大规格范围内,如果它们高于或低于我想说如果我的 RT_Ch_Pres_PX1 低于我的最小值这么多然后显示该值并表示它是多少,并且与超过最大值相同。例如,如果我的 RT_Ch_Pres_PX1 值为 5,我想在 6 处使用我的最小值,在 10 处使用最大值。所以我的 Rt_Ch_pres_px1 值关闭了 1,所以我想显示这个并说这个值是 1 值。如果 RT_Ch_Pres_PX1 在最小值和最大值范围内,则什么也不做。请看下面的代码。
DECLARE @Result TABLE
(
RT_DateTime datetime,
RT_Phase_Name varchar(30),
RT_PhaseChangeCount int,
RT_Phase_Type int,
RT_Ch_Pres_PX1 float
);
/* Variables used to track changes to Phase Name */
DECLARE @RT_DateTime datetime;
DECLARE @RT_Phase_Name varchar(30);
DECLARE @RT_PhaseChangeCount int;
DECLARE @RT_Phase_Type int;
DECLARE @RT_Ch_Pres_PX1 float;
DECLARE @PhaseNameHold varchar(30);
DECLARE @PhaseChangeCount int;
SELECT @PhaseNameHold = ' ';
SELECT @PhaseChangeCount = 0;
SELECT @RT_PhaseChangeCount = 0;
/* Declare a cursor for determining when Phases change */
DECLARE ImportCursor CURSOR FAST_FORWARD FOR
SELECT
CONVERT(datetime, dbo.CycleData.Date_Time) as TimeConvert,
[dbo].[LookupPhases].[Phase_Name],
[dbo].[cycledata].[phase_type],
[dbo].[cycledata].[Ch_Pres_PX1]
FROM
CycleData INNER JOIN
CycleDataHeader ON CycleData.Unit_Number = CycleDataHeader.Unit_Number AND CycleData.Cycle_Counter_No = CycleDataHeader.Cycle_Counter_No INNER JOIN
LookupPhases ON CycleData.Phase_Type = LookupPhases.Phase_Type INNER JOIN
LookupEvent ON CycleData.Event_Type = LookupEvent.Event_Id LEFT OUTER JOIN
LookupAlarm ON CycleData.Alarm_Type = LookupAlarm.Alarm_Id
WHERE
[dbo].[CycleDataHeader].[Entered_Load_No1] = 'T14-0008'
ORDER BY
/* Appears to be the order that needs to be reported on */
Cycle_Time
-- dbo.CycleData.Unit_Number,
-- TimeConvert;
OPEN ImportCursor;
FETCH NEXT FROM ImportCursor INTO @RT_DateTime,
@RT_Phase_Name,
@RT_Phase_Type,
@RT_Ch_Pres_PX1
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@RT_Phase_Name <> @PhaseNameHold)
BEGIN
SET @PhaseNameHold = @RT_Phase_Name;
SET @RT_PhaseChangeCount = @RT_PhaseChangeCount + 1;
END
INSERT INTO @Result VALUES(@RT_DateTime, @RT_Phase_Name,@RT_PhaseChangeCount,@RT_Phase_Type,@RT_Ch_Pres_PX1);
FETCH NEXT FROM ImportCursor INTO @RT_DateTime, @RT_Phase_Name,@RT_Phase_Type,@RT_Ch_Pres_PX1;
END
CLOSE ImportCursor;
DEALLOCATE ImportCursor;
SELECT
RT_DateTime,
RT_Phase_Name,
RT_PhaseChangeCount,
RT_Phase_Type,
RT_Ch_Pres_PX1
FROM @Result;
【问题讨论】:
-
您当前的代码不起作用怎么办?它是否返回错误?
标签: sql sql-server sql-server-2008 reporting-services