我遇到问题,为什么我有这个。
以下是声明:
SELECT Incident.salesrep AS Salesman, Incident.Incidentnumber AS Incidentent, bc.Name AS Customer, Incident.Address3 AS [Ship to Customer], Incident.UserText6 AS [Customer Type],
inv.InvoiceNumber AS Invoice, sopHdr.DOCDATE AS [Document Date], sopHdr.GLPOSTDT AS [GL Post Date],
CASE WHEN sopHdr.DOCAMNT < 0 THEN (sopHdr.DOCAMNT) WHEN (sopHdr.SOPTYPE = 4 AND sopHdr.DOCAMNT > 0) THEN (sopHdr.DOCAMNT * - 1)
ELSE CASE WHEN Paid.Paid IS NULL THEN 0.00 ELSE Paid.Paid END END AS [Amount Received], CASE WHEN sopHdr.SOPTYPE = 4 THEN (sopHdr.DOCAMNT * - 1)
ELSE sopHdr.DOCAMNT END AS [Sales Amount], CASE WHEN sopHdr.SOPTYPE = 4 THEN (inv.CostTotal * - 1) ELSE inv.CostTotal END AS [Ext Cost],
CASE WHEN sopHdr.SOPTYPE = 4 THEN (inv.TaxTotal * - 1) ELSE inv.TaxTotal END AS [Tax Amount],
CASE WHEN Incident.UserText8 = 'AVATAX' THEN 'S' WHEN Incident.UserText8 = 'COGS' THEN 'U' ELSE 'X' END AS [Tax Type],
CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.DOCAMNT - inv.TaxTotal) * - 1) ELSE (sopHdr.DOCAMNT - inv.TaxTotal) END AS [Net Sales],
CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) * - 1) ELSE (sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal)
END AS [Gross Profit],
--CASE WHEN (Incident.UserText1 IS NULL OR
-- Incident.UserText1 = '') THEN 0.00 ELSE CASE WHEN sopHdr.SOPTYPE = 4 THEN (((sopHdr.DOCAMNT - inv.TaxTotal) - inv.CostTotal) * - 1) * (Incident.UserText1 / 100.0)
-- ELSE ((sopHdr.DOCAMNT - inv.TaxTotal) - inv.CostTotal) * (Incident.UserText1 / 100.0) END END AS [Accrued Commission],
--CASE WHEN (Incident.UserText1 IS NULL OR
-- Incident.UserText1 = '') THEN '0.00' ELSE Incident.UserText1 END AS [Commission %], Incident.UserText21 AS [Not Commissionable], Incident.UserText18 AS [Date 1st Comm PD],
CASE WHEN (sopHdr.SUBTOTAL IS NULL OR
sopHdr.SUBTOTAL = 0) THEN 0.00
ELSE
CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) / (sopHdr.SUBTOTAL - inv.TaxTotal)) * - 100
ELSE (((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) / (sopHdr.SUBTOTAL - inv.TaxTotal)) * 100)
END END AS [Sale Gross Profit %],
CASE WHEN (sopHdr.DOCAMNT < 0) OR
(sopHdr.SOPTYPE = 4 AND sopHdr.DOCAMNT > 0) THEN 100.00
ELSE
CASE WHEN (Paid.Paid IS NULL OR Paid.Paid = 0) OR (sopHdr.DOCAMNT = 0 OR sopHdr.DOCAMNT IS NULL) THEN 0.00
ELSE (Paid.Paid / sopHdr.DOCAMNT) * 100 END END AS [Paid %], Incident.UserText25 AS Direct, Incident.UserText26 AS [Split w/Rep],
Incident.UserText27 AS [% of Job Rep 1], Incident.UserText28 AS [% of Job Rep 2], Incident.UserText23 AS [Date 2nd Comm PD], inv.InvoiceTotal AS [Invoiced Total]
FROM (SELECT Record, BatchNumber, InvoiceNumber, InvoiceDate, Status, InvoiceType, InvoiceSource, ApplyTo, IncidentNumber, IncidentNumber, TaskID,
BillToCompanyID, BillToCompanyCode, BillToCompanyName, BillToAddressID, BillToAddressCode, BillToAddress1, BillToAddress2, BillToAddress3,
BillToAddress4, BillToCity, BillToState, BillToZip, BillToCountry, PONumber, BillingContactID, BillingFirstName, BillingLastName, BillingPhone,
BillingExtension, BillingEmail, IntegrationValue, InternalNotes, ExternalNotes, CreateDate, ModifyDate, EnteredByUser, ModifiedByUser, ContractNumber,
Division, IsEmailed, UserNotes, UserNotes2, DocumentType, PaymentTerms, TransferToBatchNumber, AdjustmentType, IsPaid, UserText1, UserText2,
UserText3, UserText4, UserText5, UserText6, UserText7, UserText8, UserText9, UserText10, UserDate1, UserDate2, UserDate3, UserNotes3,
(SELECT SUM(SalesAmount) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail
WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS SubTotal,
(SELECT SUM(SalesTax) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_3
WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS TaxTotal,
(SELECT ISNULL(SUM(SalesAmount), 0) + ISNULL(SUM(SalesTax), 0) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_2
WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS InvoiceTotal,
(SELECT SUM(CostAmount) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_1
WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS CostTotal
FROM AlertCRM.dbo.Invoice) AS inv INNER JOIN
AlertCRM.dbo.Incident AS Incident ON Incident.IncidentNumber = inv.IncidentNumber LEFT OUTER JOIN
AlertCRM.dbo.Company AS bc ON bc.CompanyID = Incident.BillingCompanyID LEFT OUTER JOIN
dbo.SOP30200 AS sopHdr ON sopHdr.SOPNUMBE = inv.InvoiceNumber LEFT OUTER JOIN
(SELECT APTODCNM AS Invoice, SUM(Paid) AS Paid
FROM (SELECT APTODCNM, SUM(ActualApplyToAmount) AS Paid
FROM dbo.RM20201
GROUP BY APTODCNM
UNION
SELECT APTODCNM, SUM(ActualApplyToAmount) AS Paid
FROM dbo.RM30201
GROUP BY APTODCNM) AS p
GROUP BY APTODCNM) AS Paid ON Paid.Invoice = sopHdr.SOPNUMBE
请指教。
答案 0 :(得分:0)
你不需要FROM with inv。删除它。请尝试以下查询。
SELECT Incident.salesrep AS Salesman,
Incident.Incidentnumber AS Incidentent,
bc.Name AS Customer,
Incident.Address3 AS [Ship to Customer],
Incident.UserText6 AS [Customer Type],
inv.InvoiceNumber AS Invoice,
sopHdr.DOCDATE AS [Document Date],
sopHdr.GLPOSTDT AS [GL Post Date],
CASE WHEN sopHdr.DOCAMNT < 0 THEN (sopHdr.DOCAMNT) WHEN (sopHdr.SOPTYPE = 4 AND sopHdr.DOCAMNT > 0) THEN (sopHdr.DOCAMNT * - 1) ELSE CASE WHEN Paid.Paid IS NULL THEN 0.00 ELSE Paid.Paid END END AS [Amount Received], CASE WHEN sopHdr.SOPTYPE = 4 THEN (sopHdr.DOCAMNT * - 1) ELSE sopHdr.DOCAMNT END AS [Sales Amount], CASE WHEN sopHdr.SOPTYPE = 4 THEN (inv.CostTotal * - 1) ELSE inv.CostTotal END AS [Ext Cost], CASE WHEN sopHdr.SOPTYPE = 4 THEN (inv.TaxTotal * - 1) ELSE inv.TaxTotal END AS [Tax Amount], CASE WHEN Incident.UserText8 = 'AVATAX' THEN 'S' WHEN Incident.UserText8 = 'COGS' THEN 'U' ELSE 'X' END AS [Tax Type], CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.DOCAMNT - inv.TaxTotal) * - 1) ELSE (sopHdr.DOCAMNT - inv.TaxTotal) END AS [Net Sales], CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) * - 1) ELSE (sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) END AS [Gross Profit], --CASE WHEN (Incident.UserText1 IS NULL OR -- Incident.UserText1 = '') THEN 0.00 ELSE CASE WHEN sopHdr.SOPTYPE = 4 THEN (((sopHdr.DOCAMNT - inv.TaxTotal) - inv.CostTotal) * - 1) * (Incident.UserText1 / 100.0) -- ELSE ((sopHdr.DOCAMNT - inv.TaxTotal) - inv.CostTotal) * (Incident.UserText1 / 100.0) END END AS [Accrued Commission], --CASE WHEN (Incident.UserText1 IS NULL OR -- Incident.UserText1 = '') THEN '0.00' ELSE Incident.UserText1 END AS [Commission %], Incident.UserText21 AS [Not Commissionable], Incident.UserText18 AS [Date 1st Comm PD], CASE WHEN (sopHdr.SUBTOTAL IS NULL OR sopHdr.SUBTOTAL = 0) THEN 0.00 ELSE CASE WHEN sopHdr.SOPTYPE = 4 THEN ((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) / (sopHdr.SUBTOTAL - inv.TaxTotal)) * - 100 ELSE (((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) / (sopHdr.SUBTOTAL - inv.TaxTotal)) * 100) END END AS [Sale Gross Profit %], CASE WHEN (sopHdr.DOCAMNT < 0) OR (sopHdr.SOPTYPE = 4 AND sopHdr.DOCAMNT > 0) THEN 100.00 ELSE CASE WHEN (Paid.Paid IS NULL OR Paid.Paid = 0) OR (sopHdr.DOCAMNT = 0 OR sopHdr.DOCAMNT IS NULL) THEN 0.00 ELSE (Paid.Paid / sopHdr.DOCAMNT) * 100 END END AS [Paid %], Incident.UserText25 AS Direct,
Incident.UserText26 AS [Split w/Rep], Incident.UserText27 AS [% of Job Rep 1], Incident.UserText28 AS [% of Job Rep 2], Incident.UserText23 AS [Date 2nd Comm PD], inv.InvoiceTotal AS [Invoiced Total]
FROM (SELECT Record,
BatchNumber,
InvoiceNumber,
InvoiceDate,
Status,
InvoiceType,
InvoiceSource,
ApplyTo,
IncidentNumber,
IncidentNumber,
TaskID,
BillToCompanyID,
BillToCompanyCode,
BillToCompanyName,
BillToAddressID,
BillToAddressCode,
BillToAddress1,
BillToAddress2,
BillToAddress3,
BillToAddress4,
BillToCity,
BillToState,
BillToZip,
BillToCountry,
PONumber,
BillingContactID,
BillingFirstName,
BillingLastName,
BillingPhone,
BillingExtension,
BillingEmail,
IntegrationValue,
InternalNotes,
ExternalNotes,
CreateDate,
ModifyDate,
EnteredByUser,
ModifiedByUser,
ContractNumber,
Division,
IsEmailed,
UserNotes,
UserNotes2,
DocumentType,
PaymentTerms,
TransferToBatchNumber,
AdjustmentType,
IsPaid,
UserText1,
UserText2,
UserText3,
UserText4,
UserText5,
UserText6,
UserText7,
UserText8,
UserText9,
UserText10,
UserDate1,
UserDate2,
UserDate3,
UserNotes3,
(SELECT SUM(SalesAmount) AS Expr1 FROM AlertCRM.dbo.InvoiceDetail WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS SubTotal,
(SELECT SUM(SalesTax) AS Expr1 FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_3 WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS TaxTotal,
(SELECT ISNULL(SUM(SalesAmount), 0) + ISNULL(SUM(SalesTax), 0) AS Expr1 FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_2 WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS InvoiceTotal,
(SELECT SUM(CostAmount) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_1 WHERE (InvoiceRecord = AlertCRM.dbo.Invoice.Record)) AS CostTotal,
Incident.Invoice AS inv
INNER JOIN AlertCRM.dbo.Incident AS Incident ON Incident.IncidentNumber = inv.IncidentNumber LEFT OUTER JOIN AlertCRM.dbo.Company AS bc ON bc.CompanyID = Incident.BillingCompanyID LEFT OUTER JOIN dbo.SOP30200 AS sopHdr ON sopHdr.SOPNUMBE = inv.InvoiceNumber LEFT OUTER JOIN (SELECT APTODCNM AS Invoice,
SUM(Paid) AS Paid FROM (SELECT APTODCNM,
SUM(ActualApplyToAmount) AS Paid FROM dbo.RM20201 GROUP BY APTODCNM UNION SELECT APTODCNM,
SUM(ActualApplyToAmount) AS Paid FROM dbo.RM30201 GROUP BY APTODCNM) AS p GROUP BY APTODCNM) AS Paid ON Paid.Invoice = sopHdr.SOPNUMBE
答案 1 :(得分:0)
试试这个
SELECT Incident.salesrep AS Salesman,
Incident.Incidentnumber AS Incidentent,
bc.Name AS Customer,
Incident.Address3 AS [Ship to Customer],
Incident.UserText6 AS [Customer Type],
inv.InvoiceNumber AS Invoice,
sopHdr.DOCDATE AS [Document Date],
sopHdr.GLPOSTDT AS [GL Post Date],
CASE
WHEN sopHdr.DOCAMNT < 0
THEN(sopHdr.DOCAMNT)
WHEN(sopHdr.SOPTYPE = 4
AND sopHdr.DOCAMNT > 0)
THEN(sopHdr.DOCAMNT * -1)
ELSE CASE
WHEN Paid.Paid IS NULL
THEN 0.00
ELSE Paid.Paid
END
END AS [Amount Received],
CASE
WHEN sopHdr.SOPTYPE = 4
THEN(sopHdr.DOCAMNT * -1)
ELSE sopHdr.DOCAMNT
END AS [Sales Amount],
CASE
WHEN sopHdr.SOPTYPE = 4
THEN(inv.CostTotal * -1)
ELSE inv.CostTotal
END AS [Ext Cost],
CASE
WHEN sopHdr.SOPTYPE = 4
THEN(inv.TaxTotal * -1)
ELSE inv.TaxTotal
END AS [Tax Amount],
CASE
WHEN Incident.UserText8 = 'AVATAX'
THEN 'S'
WHEN Incident.UserText8 = 'COGS'
THEN 'U'
ELSE 'X'
END AS [Tax Type],
CASE
WHEN sopHdr.SOPTYPE = 4
THEN((sopHdr.DOCAMNT - inv.TaxTotal) * -1)
ELSE(sopHdr.DOCAMNT - inv.TaxTotal)
END AS [Net Sales],
CASE
WHEN sopHdr.SOPTYPE = 4
THEN((sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal) * -1)
ELSE(sopHdr.SUBTOTAL - inv.TaxTotal - inv.CostTotal)
END AS [Gross Profit]
FROM
(
SELECT Record,
BatchNumber,
InvoiceNumber,
InvoiceDate,
Status,
InvoiceType,
InvoiceSource,
ApplyTo,
IncidentNumber,
TaskID,
BillToCompanyID,
BillToCompanyCode,
BillToCompanyName,
BillToAddressID,
BillToAddressCode,
BillToAddress1,
BillToAddress2,
BillToAddress3,
BillToAddress4,
BillToCity,
BillToState,
BillToZip,
BillToCountry,
PONumber,
BillingContactID,
BillingFirstName,
BillingLastName,
BillingPhone,
BillingExtension,
BillingEmail,
IntegrationValue,
InternalNotes,
ExternalNotes,
CreateDate,
ModifyDate,
EnteredByUser,
ModifiedByUser,
ContractNumber,
Division,
IsEmailed,
UserNotes,
UserNotes2,
DocumentType,
PaymentTerms,
TransferToBatchNumber,
AdjustmentType,
IsPaid,
UserText1,
UserText2,
UserText3,
UserText4,
UserText5,
UserText6,
UserText7,
UserText8,
UserText9,
UserText10,
UserDate1,
UserDate2,
UserDate3,
UserNotes3,
(
SELECT SUM(SalesAmount) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail
WHERE(InvoiceRecord = AlertCRM.dbo.Invoice.Record)
) AS SubTotal,
(
SELECT SUM(SalesTax) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_3
WHERE(InvoiceRecord = AlertCRM.dbo.Invoice.Record)
) AS TaxTotal,
(
SELECT ISNULL(SUM(SalesAmount), 0) + ISNULL(SUM(SalesTax), 0) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_2
WHERE(InvoiceRecord = AlertCRM.dbo.Invoice.Record)
) AS InvoiceTotal,
(
SELECT SUM(CostAmount) AS Expr1
FROM AlertCRM.dbo.InvoiceDetail AS InvoiceDetail_1
WHERE(InvoiceRecord = AlertCRM.dbo.Invoice.Record)
) AS CostTotal
FROM AlertCRM.dbo.Invoice
) AS inv
INNER JOIN AlertCRM.dbo.Incident AS Incident ON Incident.IncidentNumber = inv.IncidentNumber
LEFT OUTER JOIN AlertCRM.dbo.Company AS bc ON bc.CompanyID = Incident.BillingCompanyID
LEFT OUTER JOIN dbo.SOP30200 AS sopHdr ON sopHdr.SOPNUMBE = inv.InvoiceNumber
LEFT OUTER JOIN
(
SELECT APTODCNM AS Invoice,
SUM(Paid) AS Paid
FROM
(
SELECT APTODCNM,
SUM(ActualApplyToAmount) AS Paid
FROM dbo.RM20201
GROUP BY APTODCNM
UNION
SELECT APTODCNM,
SUM(ActualApplyToAmount) AS Paid
FROM dbo.RM30201
GROUP BY APTODCNM
) AS p
GROUP BY APTODCNM
) AS Paid ON Paid.Invoice = sopHdr.SOPNUMBE;