Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我要加入并获取outputHi selva的查询..我查看了您的代码..逻辑似乎正常,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的_Sql_Performance_Sql Server 2008_Sql Tuning_Query Tuning - Fatal编程技术网

Sql 我要加入并获取outputHi selva的查询..我查看了您的代码..逻辑似乎正常,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的

Sql 我要加入并获取outputHi selva的查询..我查看了您的代码..逻辑似乎正常,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的,sql,performance,sql-server-2008,sql-tuning,query-tuning,Sql,Performance,Sql Server 2008,Sql Tuning,Query Tuning,我要加入并获取outputHi selva的查询..我查看了您的代码..逻辑似乎正常,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的。嗨,selva..我看了你的代码..逻辑看起来不错,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的。嗨,selva..


我要加入并获取outputHi selva的查询..我查看了您的代码..逻辑似乎正常,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的。嗨,selva..我看了你的代码..逻辑看起来不错,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的。嗨,selva..我看了你的代码..逻辑看起来不错,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5为Cols,Rows/11为Rows。这意味着2x1应该是输出。输出应该是动态的。嗨,selva..我看了你的代码..逻辑看起来不错,但查看siteID MN272252..它应该只创建2行而不是4行,因为,Cols/8.5作为Cols,Rows/11作为Rows。这意味着2x1应该是输出。输出应该是动态的。谢谢!!这也帮助我创建了视图..你能详细说明一下如何在上面的CTE中实现Col-1..这是一个递归CTE。你在锚点中设置col/row的最大值(Rows/11和Cols/8.5),然后在递归成员中继续减法,直到达到1。太好了!!非常感谢。谢谢!!这也帮助我创建了视图..你能详细说明一下如何在上面的CTE中实现Col-1..这是一个递归CTE。你在锚点中设置col/row的最大值(Rows/11和Cols/8.5),然后在递归成员中继续减法,直到达到1。太好了!!非常感谢。谢谢!!这也帮助我创建了视图..你能详细说明一下如何在上面的CTE中实现Col-1..这是一个递归CTE。你在锚点中设置col/row的最大值(Rows/11和Cols/8.5),然后在递归成员中继续减法,直到达到1。太好了!!非常感谢。谢谢!!这也帮助我创建了视图..你能详细说明一下如何在上面的CTE中实现Col-1..这是一个递归CTE。你在锚点中设置col/row的最大值(Rows/11和Cols/8.5),然后在递归成员中继续减法,直到达到1。太好了!!谢谢。
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
INSERT INTO @Temp (SiteID, StructureID, row, col)
    SELECT StructureID, SiteID, Cols / 8.5 AS Cols, Rows / 11 AS Rows
    FROM Structure
    WHERE SellerID = 658;
with n as (
      select row_number() over (order by (select null)) as n
      from master..spt_values
     ) 
INSERT INTO @Temp (SiteID, StructureID, row, col)
    SELECT StructureID, SiteID, ncol.n / 8.5 AS Cols, nrow.n / 11 AS Rows
    FROM Structure s JOIN
         n ncol
         ON ncol.n <= s.struct_col CROSS JOIN
         n nrow
         ON nrow <= s.struct_row
    WHERE SellerID = 658;
;WITH Cols
AS
(
    SELECT StructureID, SiteID, CAST(Cols / 8.5 AS INT) AS Col
    FROM Structure
    UNION ALL
    SELECT s.StructureID, s.SiteID, Col - 1
    FROM Structure s
        INNER JOIN Cols c ON s.StructureID = c.StructureID AND s.SiteID = c.SiteID
    WHERE Col > 1
)
, Rows
AS
(
    SELECT StructureID, SiteID, CAST(Rows / 11 AS INT) AS Row
    FROM Structure
    UNION ALL
    SELECT s.StructureID, s.SiteID, Row - 1
    FROM Structure s
        INNER JOIN Rows r ON s.StructureID = r.StructureID AND s.SiteID = r.SiteID
    WHERE Row > 1
)
--INSERT INTO @Temp (SiteID, StructureID, row, col)
SELECT s.SiteID, s.StructureID, r.Row, c.Col 
FROM Structure s
    CROSS APPLY Cols c
    CROSS APPLY Rows r
WHERE s.StructureID = c.StructureID AND s.SiteID = c.SiteID
    AND s.StructureID = r.StructureID AND s.SiteID = r.SiteID
CREATE TABLE Structure(SiteID varchar(20), StructureID int, 
Cols decimal(18,2), [Rows] decimal(18,2))

INSERT INTO Structure (SiteID, StructureID, Cols, [Rows])

VALUES

('MN353970', 51,17,22),
('MN272252', 52,17,11)


;WITH RowCTE([Rows]) AS
(
    SELECT 1 
    UNION ALL
    SELECT 2
),
ColCTE(Cols) AS
(
    SELECT 1
    UNION ALL
    SELECT 2
)

SELECT SiteID, StructureID, R.Rows, C.Cols
FROM Structure s
CROSS APPLY
    (
        SELECT Cols FROM ColCTE
    ) C
CROSS APPLY
    (
        SELECT [Rows] FROM RowCTE
    ) R