2014-09-04 3 views
-1

두 개의 쿼리가 있고이를 결합하려고합니다. 특정 조건이 충족 될 때만 첫 번째 쿼리를 실행하고 다른 조건에 따라 두 번째 쿼리를 실행하여 그 중 하나만 매번 실행해야합니다. 원래는 SP 였지만 오류를 쉽게 수정하고 처리 할 수 ​​있도록 쿼리로 변경했습니다. 여기에 쿼리가 있습니다. 조인을 사용하여 쿼리를 결합했습니다. 내가 매개 변수를 포함 if 문을 넣어야 하나의 보고서에 (매개 변수 크리스탈 리포트) 여기특정 조건부 쿼리를 실행하는 방법


1 쿼리 를 사용할 것이다 것이기 때문에 내가 그들을 분리 할 수 ​​

하는 int로 선언됩니다. 매개 변수 값이 특정 값과 같으면이 쿼리가 실행되고 두 번째 쿼리는 무시됩니다. 여기에 일치하지 않으면 두 번째 쿼리의 두 번째 if 문으로 값을 전달해야합니다.

SELECT  odrf.DocEntry, odrf.CntctCode,drf1.SubCatNum, odrf.Address2, drf1.LineNum, odrf.DocType, odrf.CANCELED, odrf.Handwrtten, odrf.DocStatus, odrf.Transfered, odrf.DocDate, odrf.DocDueDate, 
          odrf.CardCode, odrf.Printed, odrf.CardName, odrf.Address, odrf.NumAtCard, odrf.VatPercent, odrf.VatSum, odrf.VatSumFC, odrf.DiscPrcnt, odrf.DiscSumFC, 
          odrf.DiscSum, odrf.PaidToDate, odrf.DocTotalFC, odrf.DocTotal, odrf.DocRate, odrf.Comments, odrf.VatSumSy, odrf.DocTotalSy,odrf.NumAtCard, odrf.CreateDate, odrf.DocNum, drf1.U_LCCP, 
          odrf.TaxDate, drf1.ItemCode, drf1.Dscription, drf1.Price, drf1.DiscPrcnt AS Expr1, drf1.Rate, drf1.Quantity, drf1.StockSum, drf1.unitMsr, drf1.BaseDocNum,drf1.LineTotal, nnm1.seriesname 


    FROM   odrf INNER JOIN 
          drf1 ON odrf.DocEntry = drf1.DocEntry 
    inner join nnm1 on odrf.series = nnm1.series 
    where ODRF.DocEntry = {[email protected]} and odrf.ObjType = 15 

UNION


2 다음은 쿼리 또한 내가 둘 필요는 IF 매개 변수 (1 쿼리에 사용 된 같은 매개 변수) 특정 동일한 경우 확인합니다 문 값. 그렇다면이 쿼리가 실행됩니다.

SELECT  odln.DocEntry, odln.CntctCode,dln1.SubCatNum, odln.Address2, dln1.LineNum, odln.DocType, odln.CANCELED, odln.Handwrtten, odln.DocStatus, odln.Transfered, odln.DocDate, odln.DocDueDate, 
         odln.CardCode, odln.Printed, odln.CardName, odln.Address, odln.NumAtCard, odln.VatPercent, odln.VatSum, odln.VatSumFC, odln.DiscPrcnt, odln.DiscSumFC, 
         odln.DiscSum, odln.PaidToDate, odln.DocTotalFC, odln.DocTotal, odln.DocRate, odln.Comments, odln.VatSumSy, odln.DocTotalSy,ODLN.NumAtCard, odln.CreateDate, ODLN.DocNum, dln1.U_LCCP, 
         odln.TaxDate, dln1.ItemCode, dln1.Dscription, dln1.Price, dln1.DiscPrcnt AS Expr1, dln1.Rate, dln1.Quantity, dln1.StockSum, dln1.unitMsr, dln1.BaseDocNum,dln1.LineTotal, nnm1.seriesname 


FROM   odln INNER JOIN 
         dln1 ON odln.DocEntry = dln1.DocEntry 
inner join nnm1 on odln.series = nnm1.series 

where odln.DocEntry = {[email protected]} 
+1

무엇이 문제입니까? IF가 필요 없지만 매개 변수를 두 개의 WHERE 절에 추가하면됩니다. –

+0

글쎄, 내가 쿼리를 실행해야 지정해야합니다 그렇지 않으면 둘 다 exicute 것입니다 및 데이터 quieris 모두에서 온 것입니다 – user3665959

답변

0

의사 코드 : 원하는 쿼리

SELECT Query1 
WHERE Query1Condition = true 
UNION ALL 
SELECT Query2 
WHERE Query2Condition = true 

필요한 경우 아니, 당신은 얻을 것이다 데이터입니다.

0

IF 문이 필요하지 않습니다. 사용자의 UNION이이를 올바르게 처리 할 수 ​​있습니다. 아래 참조 :

SELECT  
    odrf.DocEntry, odrf.CntctCode,drf1.SubCatNum, odrf.Address2, drf1.LineNum, odrf.DocType, odrf.CANCELED, odrf.Handwrtten, odrf.DocStatus, odrf.Transfered, odrf.DocDate, odrf.DocDueDate, 
    odrf.CardCode, odrf.Printed, odrf.CardName, odrf.Address, odrf.NumAtCard, odrf.VatPercent, odrf.VatSum, odrf.VatSumFC, odrf.DiscPrcnt, odrf.DiscSumFC, 
    odrf.DiscSum, odrf.PaidToDate, odrf.DocTotalFC, odrf.DocTotal, odrf.DocRate, odrf.Comments, odrf.VatSumSy, odrf.DocTotalSy,odrf.NumAtCard, odrf.CreateDate, odrf.DocNum, drf1.U_LCCP, 
    odrf.TaxDate, drf1.ItemCode, drf1.Dscription, drf1.Price, drf1.DiscPrcnt AS Expr1, drf1.Rate, drf1.Quantity, drf1.StockSum, drf1.unitMsr, drf1.BaseDocNum,drf1.LineTotal, nnm1.seriesname 
FROM   
    odrf 
    INNER JOIN 
    drf1 ON 
     odrf.DocEntry = drf1.DocEntry 
    INNER JOIN 
    nnm1 ON 
     odrf.series = nnm1.series 
WHERE 
    ODRF.DocEntry = {[email protected]} and 
    odrf.ObjType = 15 AND 
    {[email protected]} = YourFirstValue -- replace this with your data 

UNION ALL 

SELECT  
    odln.DocEntry, odln.CntctCode,dln1.SubCatNum, odln.Address2, dln1.LineNum, odln.DocType, odln.CANCELED, odln.Handwrtten, odln.DocStatus, odln.Transfered, odln.DocDate, odln.DocDueDate, 
    odln.CardCode, odln.Printed, odln.CardName, odln.Address, odln.NumAtCard, odln.VatPercent, odln.VatSum, odln.VatSumFC, odln.DiscPrcnt, odln.DiscSumFC, 
    odln.DiscSum, odln.PaidToDate, odln.DocTotalFC, odln.DocTotal, odln.DocRate, odln.Comments, odln.VatSumSy, odln.DocTotalSy,ODLN.NumAtCard, odln.CreateDate, ODLN.DocNum, dln1.U_LCCP, 
    odln.TaxDate, dln1.ItemCode, dln1.Dscription, dln1.Price, dln1.DiscPrcnt AS Expr1, dln1.Rate, dln1.Quantity, dln1.StockSum, dln1.unitMsr, dln1.BaseDocNum,dln1.LineTotal, nnm1.seriesname 
FROM  
    odln 
    INNER JOIN 
    dln1 ON 
     odln.DocEntry = dln1.DocEntry 
    INNER JOIN 
    nnm1 ON 
     odln.series = nnm1.series 
WHERE 
    odln.DocEntry = {[email protected]} AND 
    {[email protected]} = YourSecondValue -- replace this with your data 
+0

고맙다고 모두들 고마워요, 내가 통해 솔루션을 최선을 다하겠습니다. – user3665959

+0

도와 드리겠습니다 솔루션이 제대로 작동하는지 알려 주시기 바랍니다. – AHiggins

관련 문제