2012-11-09 82 views
0

我有3個表 - DimWarehousesDimProductsDimTime。我在SQL Query中創建一個集合。一切都會好的,但我需要的結果將是成本或股票不等於0.在我的查詢WHERE子句不起作用。在使用subquerys WHERE子句的SQL查詢中不起作用

如何寫它在哪裏工作?

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 
+0

希望不同的兩個值有兩種不同的值從0你需要行兩者的條件是真實的? –

+0

不,我需要一個或另一個會是真的 – Justin

回答

1

在結束時,你應該說的

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

代替

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

如果你想要的結果。

+0

它的工作,但爲什麼? – Justin

+0

bb.COST <> 0或bb.stock <> 0如果其中至少有一個爲真,則爲true。在你的情況下,對於你需要的結果旁邊的那兩行,至少有一個值是0 – wxyz

0

要獲得你想你應該使用

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

使用的結果或將返回,而你從0