Sql server 在临时表中插入相同表和不同变量的值

Sql server 在临时表中插入相同表和不同变量的值,sql-server,reportbuilder3.0,Sql Server,Reportbuilder3.0,我有这段代码,可以工作,但我想在temp表中插入来自同一表([Runtime].[dbo].[History])中另一个变量(UBB_PreT_Line_LA.If_totalInfedWeight)的相同值(DateTime和Value)。然后,我在SQL Report Builder 3.0的表格中显示结果 SET NOCOUNT ON DECLARE @fechaItem DATETIME; DECLARE @fechaFinTotal DATETIME; SET @fechaItem =

我有这段代码,可以工作,但我想在temp表中插入来自同一表([Runtime].[dbo].[History])中另一个变量(UBB_PreT_Line_LA.If_totalInfedWeight)的相同值(DateTime和Value)。然后,我在SQL Report Builder 3.0的表格中显示结果

SET NOCOUNT ON
DECLARE @fechaItem DATETIME;
DECLARE @fechaFinTotal DATETIME;
SET @fechaItem = DateAdd(hh,7,@Fecha)
SET @fechaFinTotal =  DateAdd(hh,23,@Fecha)
SET NOCOUNT OFF

DECLARE @tblTotales TABLE
(
VALOR_FECHA DATETIME,
VALOR_VALUE float
)

WHILE @fechaItem < @fechaFinTotal
BEGIN   

DECLARE @fechaFin DATETIME;
SET @fechaFin =  DATEADD(minute, 15, @fechaItem );

INSERT INTO @tblTotales
SELECT 
MAX( [DateTime] ), 
MAX( [Value] )
FROM [Runtime].[dbo].[History]
WHERE 
[DateTime] >= @fechaItem  
AND [DateTime] <= @fechaFin
AND (History.TagName='UBB_PreT_Belt_PF101A.Time_Running')

SET @fechaItem = @fechaFin;

END

SELECT TOP 64 VALOR_FECHA as Fecha,VALOR_VALUE as Valor
FROM @tblTotales
order by Valor ASC
将NOCOUNT设置为ON
声明@fechaItem DATETIME;
声明@fechaFinTotal DATETIME;
设置@fechaItem=DateAdd(hh,7,@Fecha)
设置@fechaFinTotal=DateAdd(hh,23,@Fecha)
抵消
声明@tblTotales表
(
VALOR_FECHA DATETIME,
价值浮动
)
而@fechaItem<@fechaFinTotal
开始
声明@fechaFin DATETIME;
设置@fechaFin=DATEADD(分钟,15,@fechaItem);
插入@tbltolates
选择
最大值([DateTime]),
最大值([值])
从[Runtime].[dbo].[History]
哪里
[日期时间]>=@fechaItem

和[DateTime]如果我正确理解了您的问题,我认为此查询将完全替换您的代码(并添加第二个值):

(您可能希望使用
CASE
作为值,在相同的模式下使用两个单独的日期)

您不应该构建数据1,您应该找到一种方法(如上面所述)来表示整个结果集作为一个查询应该是什么样子。让SQL Server自己通过按日期顺序搜索行来决定是否这样做



1在某些情况下,您可能不得不这样做,但首先要用尽所有可能的基于集合的选项。

我不清楚您想做什么。一些样本数据和预期结果将大有帮助。我也不清楚为什么要通过修改行而不是编写一个查询来构建此数据行,该查询按15分钟的间隔对数据进行分组。我已经修改了代码(图02),通过报表生成器的查询设计器,我获得了图03中所示的内容。最终目标是将第二个变量的数据放在右边的两列中(Fecha__Ton和Valor_Ton)。我怎么做?
declare @sample table (Datetime datetime not null, Value int not null, 
                       TagName varchar(50) not null)
insert into @sample (DateTime, Value, TagName) values
('2018-08-16T10:14:00',6,'UBB_PreT_Belt_PF101A.Time_Running'),
('2018-08-16T10:08:00',8,'UBB_PreT_Belt_PF101A.Time_Running'),
('2018-08-16T10:23:00',7,'UBB_PreT_Belt_PF101A.Time_Running'),
('2018-08-16T10:07:00',7,'UBB_PreT_Line_LA.If_TotalInFeddWeight')

declare @Fecha datetime
set @Fecha = '20180816'

select
    MAX(DateTime),
    MAX(CASE WHEN TagName='UBB_PreT_Line_LA.If_TotalInFeddWeight' THEN Value END) as Fed,
    MAX(CASE WHEN TagName='UBB_PreT_Belt_PF101A.Time_Running' THEN Value END) as Running
from
    @sample
where
    DateTime >= DATEADD(hour,7,@Fecha) and
    DateTime < DATEADD(hour,23,@Fecha) and
    TagName in ('UBB_PreT_Line_LA.If_TotalInFeddWeight',
                'UBB_PreT_Belt_PF101A.Time_Running')
group by DATEADD(minute,((DATEDIFF(minute,0,DateTime)/15)*15),0)
order by MAX(DateTime) asc
                        Fed         Running
----------------------- ----------- -----------
2018-08-16 10:14:00.000 7           8
2018-08-16 10:23:00.000 NULL        7