2017-01-24 5 views
0

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)); 
+0

나는 경우가 IIF 기능을 더 쉽게로 구축 고려 ... 희망이 도움이. –

+0

스 니펫 줄이 아닌 쿼리를 더 게시하십시오. 그리고 더 쉬운 방법 *을 의미합니까? 원하는 결과를 얻고 있지만 너무 많은 중첩 된 IIF()를 원하지 않습니까? – Parfait

+0

너무 많은 중첩 된 if 문을 제외하고는 필요한 결과를 얻고 있습니다. 따라서 최대 2 개의 쿼리를 분리하고 공용체를 사용해야합니다. 때로는 그 작업을 수행 할 때 두 쿼리 내에 하나의 순서가 있기 때문에 중복이 발생합니다. – GianniR

답변

0

나는 많은 청소기 것 스위치 기능을 사용하여 탐구한다. 나는.

일() + SWITCH ([스트립 구리 - 니켈]> 0, 18, [스트립 하드 페이스]> 0, 17, 등)

[EstimatedShipDate 바와 같이

참고 참으로 평가 첫 번째 조건 , 왼쪽에서 오른쪽으로 읽으면 스위치가 해결되고 종료됩니다.

정직하게 말하자면, 데이터 모델이 필요한 것을 제공하기 위해 설계되지 않은 것처럼 보일지라도, 변경하는 것은 사치스럽지 않을 수도 있습니다. :-)

+0

도움을 주셔서 감사 드리며 저에게 줄 수있는 건설적인 비판을 보내주십시오. 나는 데이터로 원하는 것을 수행 할 수있는 사치를 가지고있다. 나는 그것을하기에 더 나은 방법을 알기 위해 아직 충분한 교육을받지 못했다. – GianniR

+0

그건 아주 잘 작동하고 확실히 많은 청소기 감사합니다 !!!!! – GianniR

+0

굉장한 Gianni. 추가 문제가 발생하면 저에게 ping하십시오. – DanielG

관련 문제