2016-12-30 148 views
-6

下面是我的SQL的一部分代碼 -Where子句在SQL服務器工作

INTO #tmpRecDistData2 
    FROM #TempReceivingUnmatchedUPCs tr 
     FULL JOIN #tmpDistributorRecords td 
      ON (tr.RecUPC=td.DistUPC) 
      where 
      tr.RecSupplierInvoiceNumber=td.DistSupplierInvoiceNumber 

這裏where子句不工作,並給予所有導致雙方的發票是否相同或不同。 可能是什麼原因?

編輯

RecSupplierInvoiceNumber  DistSupplierInvoiceNumber 
00000000111807         6745 
00000000111807         5635 
00000000111807         5676 

這是即使使用where子句

SELECT td.DistSupplierInvoiceNumber,td.DistProductDescription,td.DistUPC, 
     td.DistProductID, td.DistTranslationExists,td.DistInCatalog,  tr.RecSupplierInvoiceNumber,tr.RecProductDescription,tr.RecUPC,tr.RecProductID 

    INTO #tmpRecDistData2 
    FROM #TempReceivingUnmatchedUPCs tr 
     FULL JOIN #tmpDistributorRecords td 
      ON (tr.RecUPC=td.DistUPC) 
      WHERE RecSupplierInvoiceNumber=DistSupplierInvoiceNumber 
+0

似乎並不喜歡這可能是真的,真的。你完全確定這發生了嗎?你的代碼中沒有其他的'OR <其他條件>? – Lamak

+0

由於Where Where子句 –

+0

它將充當'Inner Join'它是真的,即使當我添加condion 其中tr.RecSupplierInvoiceNumber ='00111807', 它不會過濾數據。這些數據來自緩存嗎? –

回答

0

讓我們嘗試創建一個自包含的例子後,我收到輸出 - 下面的代碼工作正常,我。

你可以從你的應用程序插入一些示例數據到這個玩具代碼,看看它是否按照你的期望運行?如果是這樣,那麼問題在於你的代碼中的其他地方。

CREATE TABLE #TempReceivingUnmatchedUPCs (
RecUPC VARCHAR(20), 
RecSupplierInvoiceNumber VARCHAR(20), 
Foobar VARCHAR(20) 
) 

CREATE TABLE #tmpDistributorRecords (
DistUPC VARCHAR(20), 
DistSupplierInvoiceNumber VARCHAR(20), 
Foobar VARCHAR(20) 
) 

INSERT INTO #TempReceivingUnmatchedUPCs 
(RecUPC,RecSupplierInvoiceNumber,Foobar) 
VALUES 
('ABC',22,'FooA'), 
('ABD',23,'BarB'), 
('BBB',30,'RecA'), 
('BBB',31,'RecB') 

INSERT INTO #tmpDistributorRecords 
(DistUPC,DistSupplierInvoiceNumber,Foobar) 
VALUES 
('ABA',22,'FooC'), 
('BBD',43,'BarD'), 
('BBB',30,'DistA'), 
('BBB',32,'DistB') 


SELECT * 
FROM #TempReceivingUnmatchedUPCs tr 
     FULL JOIN #tmpDistributorRecords td 
      ON (tr.RecUPC=td.DistUPC) 
      where 
      tr.RecSupplierInvoiceNumber=td.DistSupplierInvoiceNumber 

DROP TABLE #TempReceivingUnmatchedUPCs 
DROP TABLE #tmpDistributorRecords 

對於我來說,這會產生

RecUPC    RecSupplierInvoiceNumber Foobar    DistUPC    DistSupplierInvoiceNumber Foobar 
-------------------- ------------------------ -------------------- -------------------- ------------------------- -------------------- 
BBB     30      RecA     BBB     30      DistA 

而且RecSupplierInvoiceNumber = DistSupplierInvoiceNumber預期

+0

這是我試圖做的和相同的輸出所期望的。即使我,我的高級開發人員也困惑爲什麼where子句不起作用。 –

+1

@PraveenSingh我真誠地懷疑你。在這個問題中,我問過幾次,如果這是**整個**代碼,並且你拒絕回答 – Lamak

+0

@PraveenSingh這將暗示代碼中的其他地方,其他東西插入#tmpRecDistData2中。 。 。你可以搜索代碼的其餘部分以查找表的其他參考嗎? – dsolimano