2017-01-31 2 views
0

Ich habe die folgende Abfrage, ich habe es geändert, um in der Lage zu sein, in einer neuen Tabelle namens Futuredial_Validation zu suchen, schrieb ich alle Bedingungen und die Joins, aber es immer noch nicht in der Tabelle suchen, nur in der nannte man cellscripter, der Rest der Abfrage funktioniert, ich schätze wirklich jede mögliche Hilfe, dank:LINKS OUTER JOIN MATCHING

SELECT row_number() OVER (ORDER BY wms_us.wms_us.rrno.rrdate, wms_us.wms_us.rrno.pono, wms_us.wms_us.transferboxdet.meidhex, att.Date_cleared) AS ROW_ID, 
    wms_us.wms_us.rrno.pono                              AS ATT_PO, 
    wms_us.wms_us.rrno.rrdate                             AS Received_Date, 
    CASE 
    WHEN (wms_us.wms_us.model.modeldesc = 'MIXED') 
    THEN wms_us.wms_us.transferboxdet.basemodel 
    ELSE wms_us.wms_us.model.modelbase 
    END AS Model, 
    CASE 
    WHEN LEN(wms_us.wms_us.transferboxdet.meidhex) >= 15 
    THEN LEFT(wms_us.wms_us.transferboxdet.meidhex, 14) 
    ELSE wms_us.wms_us.transferboxdet.meidhex 
    END AS IMEI, 
    /*Check in Futerdial else obtain the values from cellscripter*/ 
    CASE 
    WHEN (Future.[Error Code] = '1') 
    THEN Future.LocalTime 
    ELSE att.Date_cleared 
    END AS Date_cleared, 
    CASE 
    WHEN (Future.[Error Code] = '1') 
    THEN 'PASS' 
    ELSE att.Result 
    END AS Result 
FROM wms_us.wms_us.transferboxdoc 
INNER JOIN wms_us.wms_us.transferboxdet 
ON wms_us.wms_us.transferboxdoc.transferboxdocid = wms_us.wms_us.transferboxdet.transferboxdocid 
INNER JOIN wms_us.wms_us.rrno 
ON wms_us.wms_us.transferboxdet.rrnoid = wms_us.wms_us.rrno.rrnoid 
INNER JOIN wms_us.wms_us.model 
ON wms_us.wms_us.transferboxdoc.modelid = wms_us.wms_us.model.modelid 
LEFT OUTER JOIN Futerdial.dbo.Futuredial_Validation AS Future 
ON Future.IMEI = LEFT(wms_us.wms_us.transferboxdet.meidhex, 14) 
LEFT OUTER JOIN DRSCSQLQADB01.att_view2.dbo.attview2 AS att 
ON att.IMEI      = LEFT(wms_us.wms_us.transferboxdet.meidhex, 14) 
WHERE (wms_us.wms_us.rrno.rrdate > '2016-12-01') 
+0

Es würde helfen, wenn Sie würde erklären, was Sie versuchen, zu erreichen sowie entweder Ihr Schema zu vereinfachen oder uns etwas weiter geben Details zum Schema - es ist ein bisschen schwierig zu erraten, was Sie vorhaben, besonders mit all den seltsamen Tabellennamen und der 4-teiligen Notation. –

+0

Verwenden Sie hier einige Tabellenaliasnamen. Die drei- und vierteilige Benennung in den Spalten ist veraltet. –

+0

Bitte schauen Sie hier, um Ihre Frage zu verbessern..https: //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

Antwort

0

wahrscheinlich: entweder Ihre Join-Spezifikation nicht funktioniert oder der case Ausdruck für die [Error Code] ist nicht korrekt.

Überprüfen Sie, ob Sie alle Werte für [Future_imei] und [Error Code] mit diesem erhalten:

select 
    row_id = row_number() over (
     order by rrno.rrdate 
     , rrno.pono 
     , tbdet.meidhex 
     , att.Date_cleared) 
    , att_po = rrno.pono 
    , Received_Date = rrno.rrdate 
    , Model=case 
     when (m.modeldesc = 'mixed') 
     then tbdet.basemodel 
     else m.modelbase 
     end 
    , imei=case 
     when len(tbdet.meidhex) >= 15 
     then left(tbdet.meidhex, 14) 
     else tbdet.meidhex 
     end 
    , [Future_imei] = Future.imei 
    , Future.[Error Code] 
    , Date_cleared=case 
     when (Future.[Error Code] = '1') 
     then Future.LocalTime 
     else att.Date_cleared 
     end 
    , [Result]=case 
     when (Future.[Error Code] = '1') 
     then 'pass' 
     else att.Result 
     end 
from wms_us.wms_us.transferboxdoc as tbdoc 
    inner join wms_us.wms_us.transferboxdet as tbdet 
    on tbdoc.transferboxdocid = tbdet.transferboxdocid 
    inner join wms_us.wms_us.rrno as rrno 
    on tbdet.rrnoid = rrno.rrnoid 
    inner join wms_us.wms_us.model as m 
    on tbdoc.modelid = m.modelid 
    left outer join Futerdial.dbo.Futuredial_Validation as Future 
     on Future.imei = left(tbdet.meidhex, 14) 
    left outer join drscsqlqadb01.att_view2.dbo.attview2 as att 
     on att.imei = left(tbdet.meidhex, 14) 
    where (rrno.rrdate > '2016-12-01') 
+0

Nein, nicht alle Werte für Future_imei und Error Code sind null, warum passiert das? –

+0

Ich vermute, Ihre Join-Bedingung ist falsch 'Future.imei = links (tbdet.meidhex, 14)' – SqlZim

+0

irgendwelche Vorschläge? –