Microsoft Access에서 일정 데이터베이스가 있습니다. 나는 내 주문이있는 테이블을 가지고 있고 예상 배송 날짜를 계산하기 위해 if 문과 함께 두 가지 다른 쿼리를 사용하고 있는데 두 개의 쿼리 사이에 30 개의 열이 있으며 ,IIf([engraving]>0,Date()+18,IIf([plating]>0,Date()+17
을 사용하고 있습니다 .....SQL에서 if 문을 사용하는 방법
두 개의 서로 다른 쿼리를 결합해야하기 때문에 SQL에서이 작업을 수행하는 것이 더 쉬운 방법인지 궁금합니다. 공용 유니트를 사용하지 않아도 중복을 얻고 있습니다. 는 등의 요청을 추가했습니다 :
SELECT IIf([BLAST]>0,Date()+18,IIf([Strip Cu-Ni]>0,Date()+18,IIf([Strip Hard Face]>0,Date()+17,IIf([Repair Determination]>0,Date()+16,IIf([Machine For Patch]>0,Date()+16,IIf([Fit Up]>0,Date()+15,IIf([EB Weld]>0,Date()+15,IIf([Bader]>0,Date()+14,IIf([Local Straightening]>0,Date()+13,IIf([Hot Die]>0,Date()+12,IIf([Vapor Hone]>0,Date()+11))))))))))) AS [Estimated Ship Date], [Front End Classic].[CUSTOMER NAME], [Front End Classic].Priority, [Front End Classic].FAMILY, [Front End Classic].[PO#], [Front End Classic].[DATE RECEIVED], [Front End Classic].Priority, [Front End Classic].qty, [Front End Classic].Blast, [Front End Classic].[Strip Cu-Ni], [Front End Classic].[Strip Hard Face], [Front End Classic].CMM, [Front End Classic].[Repair Determination], [Front End Classic].UT, [Front End Classic].[Machine For Patch], [Front End Classic].[Fit Up], [Front End Classic].[EB Weld], [Front End Classic].Bader, [Front End Classic].[Local Straightening], [Front End Classic].[Hot Die], [Front End Classic].[Vapor Hone], [Front End Classic].[Prep Shroud], [Front End Classic].[Weld Shroud], [Front End Classic].[Prep Tip], [Front End Classic].[Weld Tip], [Front End Classic].[Mill Tip], [Front End Classic].[Mill Shroud], [Front End Classic].Blend, [Front End Classic].[Stress Relief], [Front End Classic].FPI, [Front End Classic].[X-Ray], [Front End Classic].PEEN, [Front End Classic].ECI, [Front End Classic].HVOF, [Front End Classic].Vibro, [Front End Classic].[CU-NI], [Front End Classic].Seals, [Front End Classic].[Moly Dag]
FROM [Front End Classic]
WHERE (((IIf([BLAST]>0,Date()+18,IIf([Strip Cu-Ni]>0,Date()+18,IIf([Strip Hard Face]>0,Date()+17,IIf([Repair Determination]>0,Date()+16,IIf([Machine For Patch]>0,Date()+16,IIf([Fit Up]>0,Date()+15,IIf([EB Weld]>0,Date()+15,IIf([Bader]>0,Date()+14,IIf([Local Straightening]>0,Date()+13,IIf([Hot Die]>0,Date()+12,IIf([Vapor Hone]>0,Date()+11)))))))))))) Is Not Null));
나는 경우가 IIF 기능을 더 쉽게로 구축 고려 ... 희망이 도움이. –
스 니펫 줄이 아닌 쿼리를 더 게시하십시오. 그리고 더 쉬운 방법 *을 의미합니까? 원하는 결과를 얻고 있지만 너무 많은 중첩 된 IIF()를 원하지 않습니까? – Parfait
너무 많은 중첩 된 if 문을 제외하고는 필요한 결과를 얻고 있습니다. 따라서 최대 2 개의 쿼리를 분리하고 공용체를 사용해야합니다. 때로는 그 작업을 수행 할 때 두 쿼리 내에 하나의 순서가 있기 때문에 중복이 발생합니다. – GianniR