0

私は3つのテーブルを持っています- DimWarehouses、、DimProductsおよびDimTime。そして、SQLクエリでセットを作成します。すべてがOKになるでしょうが、その結果は、コストまたは在庫が0に等しくない場合に必要です。私のクエリでは、WHERE句は機能しません。

それが機能するWhereClauseを書く方法は?

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 に答える