powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите перевести на LINQ T-SQL Stored Procedure
1 сообщений из 1, страница 1 из 1
Помогите перевести на LINQ T-SQL Stored Procedure
    #37584660
renaton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток уважаемые!
В продолжение этого вопроса.
Повторюсь еще раз, в результате моего запроса получаю такие данные:
OBJECT_IDNAMEVALUETIMESTAMP1NAME_15002009-01-28 00:002NAME_23002009-01-28 00:003NAME_3502009-01-28 00:001NAME_15102009-01-28 00:032NAME_23202009-01-28 00:033NAME_3602009-01-28 00:03............1NAME_15102009-01-28 01:002NAME_23402009-01-28 01:003NAME_3502009-01-28 01:001NAME_15202009-01-28 01:032NAME_23002009-01-28 01:033NAME_3402009-01-28 01:03............1NAME_15122009-01-28 02:002NAME_23382009-01-28 02:003NAME_3592009-01-28 02:001NAME_15122009-01-28 02:032NAME_23382009-01-28 02:033NAME_3592009-01-28 02:03............

С помощью LINQ необходимо получить данные в таком виде:

NAME00 ч.01 ч.02 ч.NAME_1505515512NAME_2310320338NAME_3554559
Может кто-нибудь на основе данного T-SQL скрипта подскажет как такое реализовать? Сам T-SQL скрипт:
T-SQL скриптUSE [ASKU]
GO
/****** Object: StoredProcedure [dbo].[GetAirValuesTwo] Script Date: 11/01/2011 10:38:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetAirValuesTwo] (@Date DATETIME, @GroupId INT)
AS
BEGIN
DECLARE @NAMES NVARCHAR(max);
DECLARE @T_NAMES NVARCHAR(max);
DECLARE @SQL NVARCHAR(max);
DECLARE @CNT INT;
DECLARE @STP INT;
SET @GroupId = 12001 --Потом удалить
IF DATEPART(YEAR,GETDATE()) = DATEPART(YEAR,@Date)
BEGIN
IF DATEPART(MONTH,GETDATE()) = DATEPART(MONTH,@Date)
BEGIN
IF DATEPART(DAY,GETDATE()) = DATEPART(DAY,@Date)
BEGIN
SET @CNT = DATEPART(HOUR,GETDATE()) - 1
END
ELSE
BEGIN
SET @CNT = 23
END
END
ELSE
BEGIN
SET @CNT = 23
END
END
ELSE
BEGIN
SET @CNT = 23
END
SET @STP = @CNT
WHILE @CNT >= 0
BEGIN
IF @CNT = @STP
BEGIN
SET @NAMES = '[' + CONVERT(NVARCHAR,@CNT) + ']'
SET @T_NAMES = '[' + CONVERT(NVARCHAR,@CNT) + '] AS [' + CONVERT(NVARCHAR,@CNT) + ' ч.]'
END
IF @CNT < @STP
BEGIN
SET @NAMES = '[' + CONVERT(NVARCHAR,@CNT) + '],' + @NAMES
SET @T_NAMES = '[' + CONVERT(NVARCHAR,@CNT) + '] AS [' + CONVERT(NVARCHAR,@CNT) + ' ч.],' + @T_NAMES
END
SET @CNT = @CNT - 1
END
SELECT @SQL =
'
WITH SELRES ([OBJ_PARAMETER_ID], [NAME], [VALUE], [TIMESTAMP]) AS
(
SELECT par.[OBJ_SKAGNAME_ID], par.[NAME] + '''+', '+ '''+lu.[NAME], val.[VALUE], val.[TIMESTAMP]
FROM [dbo].[OBJ_SKAGNAME] par
INNER JOIN [dbo].[LINK_PARGROUP] gr
ON gr.[OBJ_PARAMETER_ID]=par.[OBJ_SKAGNAME_ID]
INNER JOIN [dbo].[OBJ_PARAMETER] o_par
ON par.[OBJ_SKAGNAME_ID] = o_par.[OBJ_PARAMETER_ID]
INNER JOIN [dbo].[LIST_UNIT] lu
ON o_par.[LIST_UNIT_ID] = lu.[LIST_UNIT_ID]
INNER JOIN [dbo].[OBJ_GROUP] ogr
ON ogr.[OBJ_GROUP_ID]=gr.[OBJ_GROUP_ID]
INNER JOIN [dbo].[OBJ_PARAMETER_VALUE] val
ON val.OBJ_PARAMETER_ID = par.OBJ_SKAGNAME_ID
WHERE gr.[OBJ_GROUP_ID] = CONVERT(INT,@GroupId)
AND val.[TIMESTAMP] >= @Date AND val.[TIMESTAMP] < DATEADD(DAY,1,@Date)
)
SELECT
[NAME] AS [Параметр], [OBJ_PARAMETER_ID]
,'+@T_NAMES+'
FROM (SELECT [NAME], [OBJ_PARAMETER_ID], [VALUE], x = cast(datepart(hour,[TIMESTAMP]) as varchar) from SELRES) T
PIVOT (
AVG ( VALUE )
FOR [x] IN ('+@NAMES+')
) PVT
'
--PRINT @SQL
EXEC sp_executesql @SQL, N'@Date datetime, @GroupId int', @Date, @GroupId
END


Спасибо заранее за помощь!
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите перевести на LINQ T-SQL Stored Procedure
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]