2015-10-05 20 views
0

我想寫一個查詢,但得到一個錯誤:多部分標識符「dlv.delivery_num」無法綁定。多部分列名無法綁定

我無法弄清查詢的實際錯誤。有人可以看看它。

這裏的查詢:

SELECT shpUID.attribute_value        shipunitid, 
     pal.container_id          palletid, 
     cas.container_id          caseid, 
     dl.delivery_line_id, 
     po.attribute_value         po, 
     Max(Isnull(comm.attribute_value, ''))    commodity, 
     Sum(Isnull(Cast(wgt.attribute_value AS FLOAT), 0.0)) weight, 
     Sum(Isnull(Cast(vol.attribute_value AS FLOAT), 0.0)) volume 
FROM container pal 
     INNER JOIN container cas 
       ON pal.container_id = cas.parent_container_id 
        AND pal.container_type = 'Pallet' 
        AND cas.container_type = 'Case' 
     INNER JOIN container_detail cdtl 
       ON cdtl.container_id = cas.container_id 
     INNER JOIN container_delivery cd 
       ON cd.detail_id = cdtl.detail_id 
     INNER JOIN delivery_line dl 
       ON cd.delivery_line_id = dl.delivery_line_id 
     INNER JOIN delivery dlv 
       ON dlv.delivery_num = dl.delivery_num 
     LEFT OUTER JOIN attribute shpUID 
        ON shpUID.attribute_id = cdtl.attribute_id 
         AND shpUID.attribute_type = 'SHIP_UNIT_ID' 
     LEFT OUTER JOIN attribute wgt 
        ON wgt.attribute_id = cdtl.attribute_id 
         AND wgt.attribute_type = 'Weight' 
     LEFT OUTER JOIN attribute vol 
        ON vol.attribute_id = cdtl.attribute_id 
         AND vol.attribute_type = 'Volume' 
     LEFT OUTER JOIN attribute comm 
        ON comm.attribute_id = cdtl.attribute_id 
         AND comm.attribute_type = 'COMMODITY' 
     LEFT OUTER JOIN attribute po 
        ON po.attribute_id = cdtl.attribute_id 
         AND po.attribute_type = 'PO' 
WHERE pal.container_id = '00007712120038613557' 
     AND dlv.delivery_num IN ('D631239-S354', 'D631372-S558') 
     AND dlv.delivery_type_id = 'OUTBOUND' 
GROUP BY pal.container_id, 
      cas.container_id, 
      dl.delivery_line_id, 
      shpUID.attribute_value, 
      po.attribute_value 
UNION 
SELECT shpUID.attribute_value        shipunitid, 
     pal.container_id          palletid, 
     'UNKNOWN'           caseid, 
     dl.delivery_line_id, 
     po.attribute_value         po, 
     Max(Isnull(comm.attribute_value, ''))    commodity, 
     Sum(Isnull(Cast(wgt.attribute_value AS FLOAT), 0.0)) weight, 
     Sum(Isnull(Cast(vol.attribute_value AS FLOAT), 0.0)) volume 
FROM container pal 
     INNER JOIN container_detail cdtl 
       ON cdtl.container_id = pal.container_id 
        AND pal.container_type = 'Pallet' 
     INNER JOIN container_delivery cd 
       ON cd.detail_id = cdtl.detail_id 
     INNER JOIN delivery_line dl 
       ON cd.delivery_line_id = dl.delivery_line_id 
     LEFT OUTER JOIN attribute shpUID 
        ON shpUID.attribute_id = cdtl.attribute_id 
         AND shpUID.attribute_type = 'SHIP_UNIT_ID' 
     LEFT OUTER JOIN attribute wgt 
        ON wgt.attribute_id = cdtl.attribute_id 
         AND wgt.attribute_type = 'Weight' 
     LEFT OUTER JOIN attribute vol 
        ON vol.attribute_id = cdtl.attribute_id 
         AND vol.attribute_type = 'Volume' 
     LEFT OUTER JOIN attribute comm 
        ON comm.attribute_id = cdtl.attribute_id 
         AND comm.attribute_type = 'COMMODITY' 
     LEFT OUTER JOIN attribute po 
        ON po.attribute_id = cdtl.attribute_id 
         AND po.attribute_type = 'PO' 
WHERE pal.container_id = '00007712120038613557' 
     AND dlv.delivery_num IN ('D631239-S354', 'D631372-S558') 
     AND dlv.delivery_type_id = 'OUTBOUND' 
GROUP BY pal.container_id, 
      dl.delivery_line_id, 
      shpUID.attribute_value, 
      po.attribute_value 
+0

'delivery'有一欄名爲'delivery_num'表? – Paolo

+0

是的,它有那個專欄。 –

+0

您在第二部分中錯過了「內部聯合交付dlv ...」 – Polux2

回答

2

問題

UNION犯規的第二部分具有UNION低於WHERE條件的SELECT後聲明別名dlv

AND dlv.delivery_num IN ('D631239-S354', 'D631372-S558')

但是,你FROM部分不具有別名爲dlv任何表。

0

您的問題,你有沒有在第二個查詢的別名dlv,請看下面的代碼:

SELECT shpUID.attribute_value        shipunitid, 
     pal.container_id          palletid, 
     cas.container_id          caseid, 
     dl.delivery_line_id, 
     po.attribute_value         po, 
     Max(Isnull(comm.attribute_value, ''))    commodity, 
     Sum(Isnull(Cast(wgt.attribute_value AS FLOAT), 0.0)) weight, 
     Sum(Isnull(Cast(vol.attribute_value AS FLOAT), 0.0)) volume 
FROM container pal 
     INNER JOIN container cas ON pal.container_id = cas.parent_container_id AND pal.container_type = 'Pallet' AND cas.container_type = 'Case' 
     INNER JOIN container_detail cdtl ON cdtl.container_id = cas.container_id 
     INNER JOIN container_delivery cd ON cd.detail_id = cdtl.detail_id 
     INNER JOIN delivery_line dl ON cd.delivery_line_id = dl.delivery_line_id 
     INNER JOIN delivery dlv ON dlv.delivery_num = dl.delivery_num 
     LEFT OUTER JOIN attribute shpUID ON shpUID.attribute_id = cdtl.attribute_id AND shpUID.attribute_type = 'SHIP_UNIT_ID' 
     LEFT OUTER JOIN attribute wgt ON wgt.attribute_id = cdtl.attribute_id AND wgt.attribute_type = 'Weight' 
     LEFT OUTER JOIN attribute vol ON vol.attribute_id = cdtl.attribute_id AND vol.attribute_type = 'Volume' 
     LEFT OUTER JOIN attribute comm ON comm.attribute_id = cdtl.attribute_id AND comm.attribute_type = 'COMMODITY' 
     LEFT OUTER JOIN attribute po ON po.attribute_id = cdtl.attribute_id AND po.attribute_type = 'PO' 
WHERE pal.container_id = '00007712120038613557' 
     AND dlv.delivery_num IN ('D631239-S354', 'D631372-S558') 
     AND dlv.delivery_type_id = 'OUTBOUND' 
GROUP BY pal.container_id, 
      cas.container_id, 
      dl.delivery_line_id, 
      shpUID.attribute_value, 
      po.attribute_value 
UNION 





SELECT shpUID.attribute_value        shipunitid, 
     pal.container_id          palletid, 
     'UNKNOWN'           caseid, 
     dl.delivery_line_id, 
     po.attribute_value         po, 
     Max(Isnull(comm.attribute_value, ''))    commodity, 
     Sum(Isnull(Cast(wgt.attribute_value AS FLOAT), 0.0)) weight, 
     Sum(Isnull(Cast(vol.attribute_value AS FLOAT), 0.0)) volume 
FROM container pal 
     INNER JOIN container_detail cdtl 
       ON cdtl.container_id = pal.container_id 
        AND pal.container_type = 'Pallet' 
     INNER JOIN container_delivery cd 
       ON cd.detail_id = cdtl.detail_id 
     INNER JOIN delivery_line dl 
       ON cd.delivery_line_id = dl.delivery_line_id 
     INNER JOIN delivery dlv ON dlv.delivery_num = dl.delivery_num 
     LEFT OUTER JOIN attribute shpUID 
        ON shpUID.attribute_id = cdtl.attribute_id 
         AND shpUID.attribute_type = 'SHIP_UNIT_ID' 
     LEFT OUTER JOIN attribute wgt 
        ON wgt.attribute_id = cdtl.attribute_id 
         AND wgt.attribute_type = 'Weight' 
     LEFT OUTER JOIN attribute vol 
        ON vol.attribute_id = cdtl.attribute_id 
         AND vol.attribute_type = 'Volume' 
     LEFT OUTER JOIN attribute comm 
        ON comm.attribute_id = cdtl.attribute_id 
         AND comm.attribute_type = 'COMMODITY' 
     LEFT OUTER JOIN attribute po 
        ON po.attribute_id = cdtl.attribute_id 
         AND po.attribute_type = 'PO' 
WHERE pal.container_id = '00007712120038613557' 
     AND dlv.delivery_num IN ('D631239-S354', 'D631372-S558') 
     AND dlv.delivery_type_id = 'OUTBOUND' 
GROUP BY pal.container_id, 
      dl.delivery_line_id, 
      shpUID.attribute_value, 
      po.attribute_value 
相關問題