Этот запрос дает мне желаемый результат, но я не могу запускать этот запрос каждый раз. Две петли стоят меня. Поэтому мне нужно реализовать что-то вроде view.But логика имеет временные таблицы, которые не допускаются в представлениях Также, есть ли другой способ сохранить этот результат или изменить запрос так, чтобы он обойдется мне меньше.Как настроить следующий запрос?
DECLARE @Temp TABLE (
[SiteID] VARCHAR(100)
,[StructureID] INT
,[row] DECIMAL(4, 2)
,[col] DECIMAL(4, 2)
)
DECLARE @siteID VARCHAR(100)
,@structureID INT
,@struct_row INT
,@struct_col INT
,@rows_count INT
,@cols_count INT
,@row INT
,@col INT
DECLARE structure_cursor CURSOR
FOR
SELECT StructureID
,SiteID
,Cols/8.5 AS Cols
,Rows/11 AS Rows
FROM Structure
WHERE SellerID = 658 --AND StructureID = 55
OPEN structure_cursor
FETCH NEXT
FROM structure_cursor
INTO @structureID
,@siteID
,@struct_col
,@struct_row
SELECT @rows_count = 1
,@cols_count = 1
,@row = 1
,@col = 1
WHILE @@FETCH_STATUS = 0
BEGIN
WHILE @row <= @struct_row
BEGIN
WHILE @col <= @struct_col
BEGIN
--PRINT 'MEssage';
INSERT INTO @Temp (
SiteID
,StructureID
,row
,col
)
VALUES (
@siteID
,@structureID
,@rows_count
,@cols_count
)
SET @cols_count = @cols_count + 1;
SET @col = @col + 1;
END
SET @cols_count = 1;
SET @col = 1;
SET @rows_count = @rows_count + 1;
SET @row = @row + 1;
END
SET @row = 1;
SET @col = 1;
SET @rows_count = 1;
FETCH NEXT
FROM structure_cursor
INTO @structureID
,@siteID
,@struct_col
,@struct_row
END
CLOSE structure_cursor;
DEALLOCATE structure_cursor;
SELECT * FROM @Temp
Пожалуйста, пост выборочные данные и ожидаемые результаты. –
Я фактически конвертирую таблицу 1, как показано на рисунке выше, в таблицу 2. Так что я могу использовать вторую таблицу далее в своем запросе, чтобы присоединиться и получить результат –