0

我有 3 个表-DimWarehouses和. 我在 SQL Query 中做了一个集合。一切都会好起来的,但我需要这个结果是成本或库存不等于 0 的地方。在我的查询中,WHERE 子句不起作用。DimProductsDimTime

如何编写可以工作的 Where 子句?

where bb.COST <>0 or bb.stock <> 0

询问:

    select 
    bb.TimeKey,
    bb.ProductKey,
    bb.WarehouseKey,
    bb.stock,
    bb.COST
    from(
    SELECT dt.timekey, 
           a.productkey, 
           b.warehousekey,
           Isnull((SELECT SUM(quantyti) 
                   FROM   aa f 
                   WHERE  a.productkey = f.productkey
                          AND b.warehousekey = f.warehousekey 
                          AND f.timekey <= dt.timekey), 0) AS stock, 
           Isnull((SELECT SUM(COST) 
                   FROM   aa f 
                   WHERE  a.productkey = f.productkey 
                          AND b.warehousekey = f.warehousekey 
                          AND f.timekey <= dt.timekey), 0) AS COST
FROM   dimproducts a, 
       (SELECT warehousekey FROM   dimwarehouses) b, 
       (SELECT 20121002 AS timekey ) dt         
     )bb
                where 
bb.COST <>0 or 
bb.stock <> 0

表 aa:

TimeKey ProductKey   WarehouseKey   Quantyti    Cost
20120901    1              1          10.000    100.00
20120901    1              1         -10.000    -100.00
20120901    2              1           5.000    50.00
20120901    2              1          15.000    150.00
20120901    2              2           3.000    30.00
20120901    3              1           0.000    20.00
20120901    3              2          10.000    0.00

结果:

TimeKey ProductKey  WarehouseKey    stock   COST
20121002    2                  1    20.000  200.00
20121002    3                  1    0.000   20.00
20121002    2                  2    3.000   30.00
20121002    3                  2    10.000  0.00

我需要结果:

TimeKey ProductKey  WarehouseKey    stock   COST
20121002    2                  1    20.000  200.00
20121002    2                  2    3.000   30.00
4

2 回答 2

1

最后你应该说

where 
bb.COST <>0 and bb.stock <> 0

代替

where 
    bb.COST <>0 or bb.stock <> 0

如果你想要那个结果。

于 2012-11-09T11:53:13.567 回答
0

要获得您想要的结果,您应该使用

where bb.COST <>0 AND bb.stock <> 0

使用 OR 它将返回具有不同于 0 的值的行,而您希望这两个值都不同于 0。

于 2012-11-09T11:54:33.487 回答