将多个查询合并为单个多行输出

时间:2016-05-25 19:07:39

标签: sql-server tsql

我有一个输出正确信息的FETCH查询,但它通过提取输出每个循环作为单独的输出查询。

我要做的是将结果输出到一个表中(或者在我的情况下,我最终会使用此查询创建一个视图)

DECLARE @THID Cursor
DECLARE @THIDValue int

SET @THID = CURSOR FOR 
    SELECT       
        Transheader.ID
    FROM            
        TransHeader WITH (nolock) 
    INNER JOIN
        TransHeaderUserField WITH (nolock) ON TransHeader.ID = TransHeaderUserField.ID
    WHERE        
        (TransHeaderUserField.Rework = '1') 
        AND TransHeader.ID IS NOT NULL

OPEN @THID

FETCH NEXT FROM @THID INTO @THIDValue

WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT        
        (SELECT 
             SUM(totPartCost) 
         FROM
             TransDetail 
         WHERE
             TransHeaderID = @THIDValue) AS ThePartCost,  
        TransHeader.OrderNumber, TransHeader.ClassTypeID, 
        TransHeader.OrderCreatedDate, TransHeaderUserField.Rework, 
        TransHeaderUserField.Rework_Type, 
        TransHeaderUserField.Rework_Orders, TransHeaderUserField.Rework_Employee, 
        TransHeaderUserField.Rework_Department, TransHeader.Description
    FROM            
        TransHeader WITH (nolock) 
    INNER JOIN
        TransHeaderUserField WITH (nolock) ON TransHeader.ID = TransHeaderUserField.ID
    WHERE        
        (TransHeaderUserField.Rework = '1') AND TransHeader.ID = @THIDValue
    ORDER BY 
        TransHeaderUserField.Rework_Department, TransHeaderUserField.Rework_Employee

    FETCH NEXT FROM @THID INTO @THIDValue
END

CLOSE @THID
DEALLOCATE @THID

enter image description here

1 个答案:

答案 0 :(得分:1)

将每个SELECT INSERT到一个临时表中,在完成循环的所有迭代之后,从临时表中选择SELECT *。