2013-02-19 65 views
0
SELECT  
    TOP (100) PERCENT 
    dbo.bARCM.CustGroup, dbo.bARCM.Customer, 
    CASE WHEN udJobType IN ('Scheduled Maintenance', 'Unscheduled Emergency', 
         'Unscheduled Call Out') THEN 'Maintenance' 
     WHEN udJobType IN ('Scheduled Special Projects', 'UPS Internal Capital Exp') 
         THEN 'Capital' 
     WHEN udJobType LIKE '%Turnaround%' THEN 'T/A' 
    END AS JobType, 
    CASE WHEN Factor = 1.0 THEN 'ST' 
     WHEN Factor = 1.5 THEN 'OT' 
     WHEN Factor = 2.0 THEN 'OT' 
    END AS STOT, 
    SUM(dbo.bJBID.Hours) AS Hours, 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, dbo.bJBID.JCDate), 0) as SortMonth 
FROM   
    dbo.bJBID 
INNER JOIN 
    dbo.bJBIN ON dbo.bJBID.JBCo = dbo.bJBIN.JBCo AND dbo.bJBID.BillMonth = dbo.bJBIN.BillMonth AND dbo.bJBID.BillNumber = dbo.bJBIN.BillNumber 
INNER JOIN 
    dbo.bARCM 
INNER JOIN 
    dbo.bJCCM ON dbo.bARCM.CustGroup = dbo.bJCCM.CustGroup AND dbo.bARCM.Customer = dbo.bJCCM.Customer 
INNER JOIN 
    dbo.JCJMPM ON dbo.bJCCM.JCCo = dbo.JCJMPM.JCCo AND dbo.bJCCM.Contract = dbo.JCJMPM.Contract ON dbo.bJBIN.JBCo = dbo.JCJMPM.JCCo AND 
         dbo.bJBIN.Contract = dbo.JCJMPM.Contract 
INNER JOIN 
    dbo.bJCCT ON dbo.bJBID.CostType = dbo.bJCCT.CostType AND dbo.bJBID.PhaseGroup = dbo.bJCCT.PhaseGroup 
INNER JOIN 
    dbo.budAcctMonths ON dbo.budAcctMonths.Month = dbo.bJBIN.BillMonth 
WHERE  
    (dbo.bJCCM.JCCo = 1) 
    AND (dbo.bJBID.CostType IN (1, 41, 42, 43, 44, 45, 46)) 
    AND (dbo.bJBID.CostTypeCategory = 'L') 
    AND (dbo.JCJMPM.udPlantLocation LIKE 'Deer%') 
    AND (dbo.bARCM.Name LIKE 'Dow%' OR dbo.bARCM.Name LIKE 'Rohm%') 
GROUP BY 
    dbo.bARCM.CustGroup, dbo.bARCM.Customer, 
    dbo.JCJMPM.udJobType, dbo.bJBID.Factor, dbo.SortMonth 
HAVING  
    (dbo.bARCM.CustGroup = 1) AND (SUM(dbo.bJBID.Hours) <> 0) 

當我EXCUTE此查詢,我得到多部分組成的標識符無法綁定

多部分標識符「dbo.SortMonth」無法綁定

錯誤消息。我是SQL新手,需要一些幫助。

+0

下降的DBO。因此,按行讀取GROUP BY dbo.barcm.CustGroup,dbo.bARCM.Customer,dbo.JCJMPM.udJobType,dbo.bJBID.Factor,SortMonth' sortmonth是您select中的別名,而不是dbo中的別名,作爲表名爲sortmonth – xQbert 2013-02-19 15:43:24

+0

但我需要由Sortmonth組,我該如何解決它? – 2013-02-19 15:45:33

回答

3

SELECT被分配的SortMonth一個別名以下DATEADD(MONTH, DATEDIFF(MONTH, 0, dbo.bJBID.JCDate), 0),但你不能在GROUP BY使用別名,除非它是在一個子查詢命名。

您需要將代碼更改爲:

GROUP BY dbo.bARCM.CustGroup, 
    dbo.bARCM.Customer, 
    dbo.JCJMPM.udJobType, 
    dbo.bJBID.Factor, 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, dbo.bJBID.JCDate), 0) -- use the DATEADD code here not the alias 
+0

謝謝,它很好用。我對sql很新。 – 2013-02-19 15:50:14

+0

@ user1723572歡迎您! :) – Taryn 2013-02-19 15:51:52

相關問題