1
시나리오 : 커미션을 계산하기 위해 Excel에서 보고서를 작성합니다. 이는 지난 달의 인보이스를 기반으로합니다. 다음 tsql
쿼리를 생성하고 MSQuery
을 사용하여 연결을 만들었습니다.Excel : 키워드 'SELECT'근처의 잘못된 구문
SELECT v_rpt_Invoices.Invoice_Number, v_rpt_Invoices.Territory, v_rpt_Company.Account_Nbr, v_rpt_Invoices.Company_Name, v_rpt_Invoices.Date_Invoice,
v_rpt_Invoices.Location, v_rpt_Invoices.TicketNbr, v_rpt_Invoices.Project_ID, v_rpt_Invoices.Invoice_Type, v_rpt_Invoices.Status_Description,
CASE WHEN TicketNbr <> 0 THEN 'Service Ticket' WHEN Project_ID IS NOT NULL THEN 'Project' ELSE 'Other' END AS Invoice_For,
CASE WHEN ticketNbr <> 0 THEN
(SELECT v_rpt_Service.Board_Name
FROM v_rpt_Service
WHERE v_rpt_Invoices.TicketNbr = v_rpt_Service.TicketNbr) WHEN Project_ID IS NOT NULL THEN Project_ID ELSE 'Other' END AS Service_Board_Project,
CASE WHEN TicketNbr <> 0 THEN
(SELECT Bill_Method
FROM SR_Service
WHERE v_rpt_Invoices.TicketNbr = SR_Service.SR_Service_RecID) WHEN project_id IS NOT NULL THEN
(SELECT PM_Billing_Method_ID
FROM PM_Project
WHERE v_rpt_Invoices.PM_Project_RecID = PM_Project.PM_Project_RecID) ELSE 'NONE' END AS BillingMethod, v_rpt_Invoices.Invoice_Amount,
CASE WHEN (TicketNbr <> 0 AND
(SELECT Bill_Method
FROM SR_Service
WHERE v_rpt_Invoices.TicketNbr = SR_Service.SR_Service_RecID) = 'A') THEN Invoice_Amount * 0.7 WHEN (TicketNbr <> 0 AND
(SELECT Bill_Method
FROM SR_Service
WHERE v_rpt_Invoices.TicketNbr = SR_Service.SR_Service_RecID) = 'F') THEN 0.01 WHEN (project_id IS NOT NULL AND
(SELECT PM_Billing_Method_ID
FROM PM_Project
WHERE v_rpt_Invoices.PM_Project_RecID = PM_Project.PM_Project_RecID) = 'A') THEN Invoice_Amount * 0.7 WHEN (project_id IS NOT NULL AND
(SELECT PM_Billing_Method_ID
FROM PM_Project
WHERE v_rpt_Invoices.PM_Project_RecID = PM_Project.PM_Project_RecID) = 'F') THEN 0.01 ELSE 0.00 END AS Cost
FROM v_rpt_Invoices INNER JOIN
v_rpt_Company ON v_rpt_Invoices.Company_RecID = v_rpt_Company.Company_RecID
**WHERE (v_rpt_Invoices.Date_Invoice >= ?)**
order by Territory, Invoice_For
감사 롤링의 예입니다. 나는 "?" 전에. 일반적으로 SQL에서 쿼리를 작성한 후 Excel에서 사용할 준비가되었을 때 "?" 매개 변수를 정의합니다. 그러면 Excel에서 쿼리에 전달할 정보가있는 셀을 선택할 수 있습니다. – MTRXITGuy
@ user2023062 - 귀하의 문제가 정확히 무엇인지 확신 할 수 없습니다. 오류가 발생하는 정확한 쿼리는 무엇이며 날짜가 변환되고 있는지 확실합니까? 어쨌든 위의 쿼리를 다시 작성하십시오.이 버전은 더 나은 구문 분석을 할 수 있으며 확실히 더 빠를 것입니다. – Hogan
빙고! 쿼리를 최적화 해 주신 Hogan에게 감사드립니다. 그것은 완벽하게 작동합니다. 나는 아마도 내 모든 선택 진술로 무언가를 잃어 버렸을 것이다. Excel에 붙여 넣을 수 있었고 날짜를? 이제 셀에 날짜를 입력하면 데이터가 새로 고침됩니다. – MTRXITGuy