2016-08-09 14 views
2

eine zweite Abfrage als ein Feld Erste bin ich das Schreiben von Abfragen ziemlich neu und ich bin zu kämpfen, die neben Abfragen mit immer kombiniert:in einem ersten

SELECT od.ODCode 
, c.Description as 'Line Position' 
, ps.Description as 'Pallet Stacking' 
, pt.Description as 'Pallet Type' 
, odex.PalletRows 
, odex.PalletTypeID 
,CONCAT(( SELECT sp.SpecPropertyValue FROM SpecificationProperty sp 
INNER JOIN specificationclass sc ON sc.specclassid = sp.specclassid 
INNER JOIN specificationcode sco ON sco.specclassid = sc.specclassid and sco.speccodeid = pt.pallettypeid 
INNER JOIN SpecificationClassProperty scp ON scp.specClassid = sp.specclassid and scp.specpropertyid = sp.specpropertyid and sco.speccodeid = sp.speccodeid 
WHERE scp.specpropertyname = 'DocDir'and sc.specclassname = 'Pallettypedoc' 
), 
(SELECT sp.SpecPropertyValue FROM SpecificationProperty sp 
INNER JOIN specificationclass sc ON sc.specclassid = sp.specclassid 
INNER JOIN specificationcode sco ON sco.specclassid = sc.specclassid and sco.speccodeid = pt.pallettypeid 
INNER JOIN SpecificationClassProperty scp ON scp.specClassid = sp.specclassid and scp.specpropertyid = sp.specpropertyid and sco.speccodeid = sp.speccodeid 
WHERE scp.specpropertyname = 'Documentname'and sc.specclassname = 'Pallettypedoc')) AS Spec  
FROM ODExitPallet odex 
INNER JOIN OperationDescr od 
ON od.OperationDescrID=odex.OperationDescrID 
INNER JOIN PalletStacking ps 
ON ps.PalletStackingID=odex.PalletStackingID 
INNER JOIN PalletType pt 
ON pt.PalletTypeID=odex.PalletTypeID 
INNER JOIN Code c 
on c.CodeNumber=odex.LinePosition and c.CodeTypeID=72 
INNER JOIN WorkOrder wo 
on wo.OperationDescrID=odex.OperationDescrID  
WHERE wo.WorkOrderID = @WorkOrderID 

und

SELECT SUM(PlannedBatch)/SUM(NominalBlanks * Stacks) as NrOfPallets 
FROM (SELECT WO.PlannedBatch, WO.NominalBlanks, ODEP.OperationDescrID, LinePosition, 
    Case when COUNT(*) = 0 then 1 
    else COUNT(*) 
    end as Stacks 
FROM WorkOrder Wo 
INNER JOIN ODExitPallet ODEX 
ON WO.operationDescrID = ODEX.OperationDescrID 
INNER JOIN Stacking ST 
ON ST.PalletStackingID = ODEX.PalletStackingID 
WHERE WO.WorkOrderID = @WorkOrderID 
GROUP BY PlannedBatch, NominalBlanks, ODEX.OperationDescrID, LinePosition 
) TOTAL 

Also möchte ich die zweite Abfrage als ein Feld in meiner ersten hinzufügen. Ich habe es mit zahlreichen Dingen wie Klammern und Zeug versucht, aber ich bekomme immer Fehler. Kann mich jemand aufklären?

+0

welche Fehler Sie erhalten? und können Sie weitere Beispieldaten hinzufügen –

+0

Es ist immer falsch Syntaxen, wenn ich die zweite Abfrage hinzufügen. Ich möchte nur das Feld NrOfPallets zu meiner ersten Abfrage hinzufügen, aber es muss wie in der zweiten Abfrage berechnet werden –

Antwort

2

Einsatz () ganz zweite Abfrage, aber stellen Sie sicher, dass Sie zweite Abfrage Rückkehr nur 1 Zeile

SELECT od.ODCode 
    , c.Description as 'Line Position' 
    , ps.Description as 'Pallet Stacking' 
    , pt.Description as 'Pallet Type' 
    , odex.PalletRows 
    , odex.PalletTypeID 
    ,CONCAT(
      (
       SELECT sp.SpecPropertyValue 
       FROM SpecificationProperty sp 
       INNER JOIN specificationclass sc ON sc.specclassid = sp.specclassid 
       INNER JOIN specificationcode sco ON sco.specclassid = sc.specclassid and sco.speccodeid = pt.pallettypeid 
       INNER JOIN SpecificationClassProperty scp ON scp.specClassid = sp.specclassid and scp.specpropertyid = sp.specpropertyid and sco.speccodeid = sp.speccodeid 
       WHERE scp.specpropertyname = 'DocDir'and sc.specclassname = 'Pallettypedoc' 
      ) 
      , 
      (
       SELECT sp.SpecPropertyValue FROM SpecificationProperty sp 
       INNER JOIN specificationclass sc ON sc.specclassid = sp.specclassid 
       INNER JOIN specificationcode sco ON sco.specclassid = sc.specclassid and sco.speccodeid = pt.pallettypeid 
       INNER JOIN SpecificationClassProperty scp ON scp.specClassid = sp.specclassid and scp.specpropertyid = sp.specpropertyid and sco.speccodeid = sp.speccodeid 
       WHERE scp.specpropertyname = 'Documentname'and sc.specclassname = 'Pallettypedoc' 
      ) 
    ) AS Spec 
    ,(
     SELECT SUM(PlannedBatch)/SUM(NominalBlanks * Stacks) 
     FROM (
      SELECT WO.PlannedBatch, WO.NominalBlanks, ODEP.OperationDescrID, LinePosition, 
        Case when COUNT(*) = 0 then 1 
              else COUNT(*) 
         end as Stacks 
       FROM WorkOrder Wo 
        INNER JOIN ODExitPallet ODEX 
          ON WO.operationDescrID = ODEX.OperationDescrID 
        INNER JOIN Stacking ST 
          ON ST.PalletStackingID = ODEX.PalletStackingID 
       WHERE WO.WorkOrderID = @WorkOrderID 
      GROUP BY PlannedBatch, NominalBlanks, ODEX.OperationDescrID, LinePosition 
     ) TOTAL 
    ) AS [NrOfPallets] 
FROM ODExitPallet odex 
INNER JOIN OperationDescr od ON od.OperationDescrID=odex.OperationDescrID 
INNER JOIN PalletStacking ps ON ps.PalletStackingID=odex.PalletStackingID 
INNER JOIN PalletType pt ON pt.PalletTypeID=odex.PalletTypeID 
INNER JOIN Code c on c.CodeNumber=odex.LinePosition and c.CodeTypeID=72 
INNER JOIN WorkOrder wo on wo.OperationDescrID=odex.OperationDescrID 
WHERE wo.WorkOrderID = @WorkOrderID 
+0

Verdammt, ich war so nah! Ich vermisste nur die 'AS [NrOfPallets]' Vielen Dank! –