2014-05-25 63 views
0

此查詢有一個問題,除了列
它顯示在這coulmn多個值,作爲條件它應該只顯示一個值'7',取決於此看重coulmn值將被設置,但現在它顯示所有的價值它cuase太多的重複等問題 這裏查詢:SQL(條件不適用於一列)

SELECT  T0.ItemCode, T0.ItemName, T0.CardCode, T0.CodeBars, T0.U_VEN_CODE, T2.UgpCode, T3.AltQty, T3.BaseQty, CASE WHEN T4.Uomentry = - 1 THEN T0.[BuyUnitMsr] ELSE t4.UomName END AS 'UoMName', 
         T4.UomEntry, T0.U_CAT_CODE, T0.U_CAT_NAME, T1.CardName, 
          (SELECT  TOP (1) PDN1.U_AC_QTY_ORDER 
           FROM   PDN1 INNER JOIN 
                 OPDN ON PDN1.DocEntry = OPDN.DocEntry 
           WHERE  (PDN1.ItemCode = T0.ItemCode) AND (OPDN.CardCode = T0.CardCode) 
           ORDER BY OPDN.DocDate DESC) AS OQuantity, 
          (SELECT  TOP (1) PDN1_1.U_AC_QTY_BONUS 
           FROM   PDN1 AS PDN1_1 INNER JOIN 
                 OPDN AS OPDN_1 ON PDN1_1.DocEntry = OPDN_1.DocEntry 
           WHERE  (PDN1_1.ItemCode = T0.ItemCode) AND (OPDN_1.CardCode = T0.CardCode) 
           ORDER BY OPDN_1.DocDate DESC) AS BQuantity, ITM1_1.Price, T0.U_DISC_PER, SMMU01.WhsCode, SMMU01.OnHand, SMAB01.WhsCode AS Expr1, SMAB01.OnHand AS Expr2, 
         SMKH01.WhsCode AS Expr3, SMKH01.OnHand AS Expr4, ITM9.PriceList, ITM9.Price AS Expr5, ITM1.PriceList AS Expr6, ITM1.Price AS Expr7 
FROM   OITM AS T0 INNER JOIN 
         OCRD AS T1 ON T0.CardCode = T1.CardCode INNER JOIN 
         OUGP AS T2 ON T0.UgpEntry = T2.UgpEntry INNER JOIN 
         UGP1 AS T3 ON T2.UgpEntry = T3.UgpEntry INNER JOIN 
         OITW AS SMMU01 ON T0.ItemCode = SMMU01.ItemCode INNER JOIN 
         OITW AS SMAB01 ON SMMU01.ItemCode = SMAB01.ItemCode INNER JOIN 
         OITW AS SMKH01 ON SMAB01.ItemCode = SMKH01.ItemCode INNER JOIN 
         ITM9 ON T0.ItemCode = ITM9.ItemCode AND ITM9.PriceList = '7' INNER JOIN 
         ITM1 ON T0.ItemCode = ITM1.ItemCode LEFT OUTER JOIN 
         ITM1 AS ITM1_1 ON T0.ItemCode = ITM1_1.ItemCode AND ITM1_1.PriceList = '10' LEFT OUTER JOIN 
         OUOM AS T4 ON T3.UomEntry = T4.UomEntry 
WHERE  (T0.Series = '65') AND (T4.UomEntry = 3 OR 
         T4.UomEntry = '-1') AND (SMMU01.WhsCode = 'W-SMMU01') AND (SMAB01.WhsCode = 'W-SMAB01') AND (SMKH01.WhsCode = 'W-SMKH01') 

這裏是coulmn的結果

Expr6 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

我怎麼樣不可能讓條件中只顯示'7'? THX

+1

你可以簡化這一點,嘗試隔離問題,或者讓我們瞭解表格與彼此之間的關係嗎?這會幫助很多! – serakfalcon

+0

問題出在一個coulmn是(Expr6),它應該只顯示一個值爲'7'根據where條件,但insed它讀取所有的值,有一些條件下來,我認爲他們不工作正如他們所設想的那樣,thx – user3665959

+0

嘗試從你的內部連接中去掉ITM9.PriceList ='7',然後放入where語句 – stormCloud

回答

0
SELECT [...] 
    , ITM1.PriceList AS Expr6 
    , ITM1.Price AS Expr7 
FROM 
    OITM AS T0 
    INNER JOIN OCRD AS T1 
     ON T0.CardCode = T1.CardCode 
    INNER JOIN OUGP AS T2 
     ON T0.UgpEntry = T2.UgpEntry 
    INNER JOIN UGP1 AS T3 
     ON T2.UgpEntry = T3.UgpEntry 
    INNER JOIN OITW AS SMMU01 
     ON T0.ItemCode = SMMU01.ItemCode 
    INNER JOIN OITW AS SMAB01 
     ON SMMU01.ItemCode = SMAB01.ItemCode 
    INNER JOIN OITW AS SMKH01 
     ON SMAB01.ItemCode = SMKH01.ItemCode 
    INNER JOIN ITM9 
     ON T0.ItemCode = ITM9.ItemCode 
     AND ITM9.PriceList = '7' 
    INNER JOIN ITM1 
     ON T0.ItemCode = ITM1.ItemCode 
    LEFT OUTER JOIN ITM1 AS ITM1_1 
     ON T0.ItemCode = ITM1_1.ItemCode 
     AND ITM1_1.PriceList = '10' 
    LEFT OUTER JOIN OUOM AS T4 
     ON T3.UomEntry = T4.UomEntry 

INNER JOIN ITM1還沒有PriceList = '7'過濾

你應該能夠與修復:

INNER JOIN ITM1 
    ON T0.ItemCode = ITM1.ItemCode 
    AND ITM1.PriceList = '7' 

現在的問題是:爲什麼ITM1和ITM9被複制?