SQL Server GROUP BY子句返回许多结果

时间:2014-04-04 02:40:07

标签: sql sql-server ms-access

在连接三个表并在SQL Server中使用GROUP BY时遇到问题 下面的查询返回每个Material#的许多结果,这是我关心的主要项目分组。

当我运行此查询时,我会为每个值获得多个结果,有时列值相同,有时非常不同 我们的日期只使用日历日期而不是时间戳,所以可能一天内各种表上的许多记录都返回了很多值? 我对此感到有些失落。

查询是根据Access查询构建的,该查询返回几百个结果,而返回4k加,因为每个值重复多次。
每篇文章#和大小应该只有一个结果,但我看到大小重复多次。

我猜这与连接有关,因为删除它们及其相关的选择项,它会恢复正常。

SELECT          P.PLANT_CODE,
            P.STOCK_CATEGORY,
            P.MATERIAL,
            P.DISTRIBUTION_VERSION_CODE,
            P.PERIOD_CODE,
            P.REQUIREMENTS_DATE,
            P.PLANNED_QTY AS 'REM PLAN QTY',
            P.VERSION_IND_FLAG,
            P.SIZE_LITERAL,
            P.WITHDRAWN_QUANTITY,
            P.PLANNED_QTY + P.WITHDRAWN_QUANTITY AS 'ORIGINAL FCST QTY',
            (T.DELIVERY_QUANTITY - T.RECEIVED_QUANTITY) AS 'PO_UNDELIVERED_QTY',
            I.ON_HAND_QUANTITY,
            I.ON_HAND_QUANTITY - P.PLANNED_QTY AS 'ARTICLE_BALANCE'
 FROM           VW_PLANNED_REQMNTS_TXT P
                VW_INTRANSIT_ITEM T
 ON             P.MATERIAL = T.MATERIAL
                VW_INVENTORY I
 ON             P.MATERIAL = I.MATERIAL
 WHERE          I.ON_HAND_QUANTITY - P.PLANNED_QTY <> 0
 GROUP BY                       P.PLANT_CODE,
                    P.STOCK_CATEGORY,
                        P.MATERIAL,
                        P.DISTRIBUTION_VERSION_CODE,
                        P.PERIOD_CODE,
                    P.REQUIREMENTS_DATE,
                    P.PLANNED_QTY,
                        P.VERSION_IND_FLAG,
                        P.SIZE_LITERAL,
                    P.WITHDRAWN_QUANTITY,
                    P.PLANNED_QTY,
                P.TECHNICAL_INDEX,
                (T.DELIVERY_QUANTITY - T.RECEIVED_QUANTITY),
                I.ON_HAND_QUANTITY,
                I.ON_HAND_QUANTITY - P.PLANNED_QTY
       HAVING               P.PLANT_CODE IN (6040,6041)
       AND                  P.STOCK_CATEGORY IN ('A60385000','A60385003')
       AND                  P.DISTRIBUTION_VERSION_CODE IN (00,01,'ZU','Z2')
       AND                  P.REQUIREMENTS_DATE < GETDATE() - 60
       AND                  P.PLANNED_QTY > 0 
       ORDER BY             P.PLANT_CODE,
                        P.MATERIAL,
                P.REQUIREMENTS_DATE,
                P.TECHNICAL_INDEX;

0 个答案:

没有答案