连接查询中的重复行SQL Server 2005

时间:2015-04-27 02:22:34

标签: sql sql-server-2005

亲爱的我有以下问题。我需要从SQL Server 2005数据库中获取产品列表。事实证明我应该首先计算股票,这与许多表格有关,然后对其他表格进行计算。问题是,查询显示我分别找到了记录并且没有成功分组(除了测试之外,在这里和整个调查Google)所以我决定咨询:

PD:我把地下产品[cod_bodeg]的产品放在一边,价值较低10687到10000

PD2:该数据库属于智利ERP,他们不提供该模型的文档。我所知道的就是我自己研究的。

表格文章(ART)

  • NREGUIST(艺术鉴定)

餐桌窖(CHOI)

  • NUMREG(细胞ID)
  • STK_FISICO(该单元中的文章库存)

表NOTDE_DB(销售的物品)

  • NCODART(对艺术的自然主义者的指数)
  • cantidad(在发票中选择的文章数量,减去库存以计算数量)

表格STOCK

  • ARTICULO(ART的NREGUIST索引)
  • COD_BODEG(对CHOI的NUMREG的索引)

表DSCTO

  • ID_ART(对ART的NREGUIST的索引)
  • DESCTO(文章价格)

这是我的查询:有什么建议?

SELECT
    ROUND ( ISNULL( 
    ( 
    SELECT isnull( SUM( STOCK_DB.STK_FISICO ),0 )
        FROM 
            STOCK_DB
        JOIN CHOI_DB 
            ON STOCK_DB.cod_bodeg = CHOI_DB.numreg 
        WHERE 
            STOCK_DB.ARTICULO=ART_DB.nreguist 
            AND STOCK_DB.NUMEMPSTK=1 
            AND CHOI_DB.codigo NOT IN ('B98','B4','B6','B2')
    ) - ISNULL( 
            (
            SELECT 
                SUM(notde_db.cantidad - notde_db.cantdesp) 
            FROM 
                notde_db,notv_db 
            WHERE 
                notde_db.ncodart=ART_DB.nreguist 
                AND notde_db.terminado=0  
                AND notv_db.numreg=notde_db.numrecor 
            GROUP BY notde_db.ncodart 
            ) 
        ,0) , 0
    ), 0) as DISPONIBLE,
    [NOMBRE],
    [NREGUIST],
    [CODIGO],
    [IMPUTABLE],
    [XX],
    [UNIDMED], 
    ROUND([PRECVTA], 0) AS PRECVTA, 
    [NIVEL1], 
    [NIVEL2], 
    [NIVEL3],
    [NIVEL4], 
    [NIVEL5], 
    [NIVEL6], 
    [NIVEL7], 
    [NIVEL8], 
    [NIVEL9], 
    [CLASE1], 
    [CLASE2], 
    [CLASE3], 
    [CLASE4], 
    [ART_DISPON], 
    [OBS],
    ROUND(ISNULL([DESCT_DB].[DESCTO],0) ,0) as PRECIO2
FROM 
     [STOCK_DB], [ART_DB]
LEFT JOIN 
    [DESCT_DB] ON ([DESCT_DB].[IDART] = [ART_DB].[NREGUIST])
WHERE 
    tipo = 1 
    AND clase2 != 'XX' 
    AND clase4 != 'OFF'
    AND ([STOCK_DB].[cod_bodeg] != 10687 OR ( [STOCK_DB].[cod_bodeg] = 10687 AND [DESCT_DB].[DESCTO] > 10000))
ORDER BY 
    DISPONIBLE DESC

谢谢!

0 个答案:

没有答案