2016-08-09 12 views
2

私は書き込みクエリにかなり新しいだと私は組み合わせてクエリの隣になって苦労しています:最初のフィールドとして2番目のクエリを取得

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 

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 

だから私は最初の1つのフィールドとして2番目のクエリを追加したいと思います。私はかっこやもののようなもので数多く試しましたが、私は間違いを続けています。誰かが私を啓発することはできますか?

+0

2番目のクエリの戻りますことを確認してください?さらにサンプルデータを追加することができます –

+0

2番目のクエリを追加すると、常に不正な構文になります。私は最初のクエリにNrOfPalletsfieldを追加したいだけですが、2番目のクエリのように計算する必要があります –

答えて

2

全体2番目のクエリで()を挿入しますが、あなたが何を得るのエラーのみ1行

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

くそー、私はとても近かったです!私は 'AS [NrOfPallets]'を見逃してしまった。ありがとう! –

関連する問題