2016-12-30 147 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