SSRS - Dataset return multiple rows (intentionally) -> How can I check a specific column in all rows for a certain value?

余生长醉 提交于 2020-01-16 09:08:08

问题


I have a report that by default returns one record based on the user input in SSRS. The key column in the database is Invoice number.

Each invoice number comes with relevant information such as customer which I have scripted. Now I am trying to add another join to the script which is customerIndustry. The problem is some customers are involved in multiple industries, therefore the result of the query will not be a single row necessarily, in my case it can go up to 7. I am trying to use the returned data and keep the fields filled as before (that is my first question, how can I point to row number 1, since there is always at least one row present in result) and also check and see if certain certain value is present in the customerIndustry of any of the rows (this is my second question).

Imagine this is the returning result table:

InvoiceNum | CustNum | CustName | customerIndustry
-------------------------------------------
********** | ####### | ^^^^^^^^ | Flower
********** | ####### | ^^^^^^^^ | Agriculture
********** | ####### | ^^^^^^^^ | Medicine

1-First of all I need to get the result of first row and fill my fields like before 2-I also need to check and see if a certain value is present in customerIndustry. If yes, fill a box with value 1, if not,with 0.

This is my first time submitting a question so let me know how I can make it more clear and I appreciate your help in advance. Here is the actual code without the final join:

="SELECT T1.RptLanguageID,T1.Company,T1.CreditMemo,T1.Calc_ExtPriceTotal,T1.CustNum,T1.DocDepositCredit,T1.DocInvoiceAmt,T1.Calc_TotalMiscChrg,T1.DocRounding,T1.DocumentPrinted,T1.InvoiceComment,T1.InvoiceDate,T1.InvoiceNum,T1.InvoiceType,T1.LegalNumber,T1.PONum,T1.SoldToInvoiceAddress,T1.Calc_BillToAddressList,T1.Calc_BottomAddress,T1.Calc_CompanyAddressList,T1.Calc_CurrDocDesc,T1.Calc_CurSymbol,T1.Calc_CustContactName,T1.Calc_CustPartOpts,T1.Calc_DteOrdrd,T1.Calc_fFOB,T1.Calc_MulPackNum,T1.Calc_mulponum,T1.Calc_MulShipDate,T1.Calc_MulShipTo,T1.Calc_MulShipVia,T1.Calc_MultSoldTo,T1.Calc_MultTaxID,T1.Calc_NumRecordPerPage,T1.Calc_NumTotalParts,T1.Calc_PackNum,T1.Calc_PrintBottomAddress,T1.Calc_SalesPerson,T1.Calc_SalesTerms,T1.Calc_ShipDate,T1.Calc_ShipToAddressList,T1.Calc_ShipToContactName,T1.Calc_ShipVia,T1.[Calc_Voucher-String] as Calc_Voucher_String,T1.CurrencyCode_CurrencyID,T1.CurrencyCode_DecimalsGeneral,T1.CurrencyCode_DecimalsPrice,T1.Calc_SEBankRef,T1.Calc_CustResaleID,T1.BranchID,T1.CustAgentTaxRegNo,T1.CHISRCodeLine,T1.Calc_CHBankAcctIBANCode,T1.Calc_CHBankAcctISRPartyID, T1.InvoiceRef, T1.CMReason,T1.Calc_DocDspTaxAmt, T1.RevisionNum AS InvcHead_RevisionNum, T1.RevisionDate AS InvcHead_RevisionDate, T2.AdvanceBillCredit,T2.Company as InvcDtl_Company,T2.DocAdvanceBillCredit,T2.DocDiscount,T2.DocUnitPrice,T2.InvoiceComment as InvcDtl_InvoiceComment,T2.InvoiceLine,T2.InvoiceNum as InvcDtl_InvoiceNum,T2.PackLine,T2.PackNum,T2.DropShipPackSlip,T2.PartNum,T2.POLine,T2.PricePerCode,T2.RevisionNum,T2.SalesUM,T2.SellingOrderQty,T2.SellingShipQty,T2.ShipDate,T2.XPartNum,T2.XRevisionNum,T2.Calc_ActDate,T2.Calc_BackOrdQty,T2.Calc_UnitPrice,T2.Calc_ExtPrice,T2.Calc_Duration,T2.Calc_GetNextLegalNum,T2.Calc_InvcComment,T2.Calc_InvoiceDisplayLine,T2.Calc_IsKitParent,T2.Calc_DspDocLineTax,T2.Calc_JobNumber,T2.Calc_LabDur,T2.Calc_LabMod,T2.Calc_Labor,T2.Calc_LineDesc,T2.Calc_LineSoldToAddressList,T2.Calc_MatDur,T2.Calc_Mate,T2.Calc_MatMod,T2.Calc_Misc,T2.Calc_MiscDur,T2.Calc_MiscMod,T2.Calc_Modifier,T2.Calc_NextLegalNumID,T2.Calc_NumLineByInv,T2.Calc_ponum,T2.Calc_PSLegalNum,T2.Calc_Reference,T2.Calc_SerialNumber,T2.Calc_ShipToAddressList as InvcDtl_Calc_ShipToAddressList,T2.Calc_ShipToContactName as InvcDtl_Calc_ShipToContactName,T2.Calc_ShipToShipVia,T2.Calc_StateTaxID,T2.Calc_WarrDesc,T2.Calc_WhseCode,T2.OrderLine_DisplaySeq,T2.OrderLine_KitFlag,T2.OrderLine_KitPrintCompsInv,T2.OrderLine_KitsLoaded,T2.OrderLine_OrderLine,T2.PartNum_PartDescription, T3.CallComment,T3.CallQty,T3.PartNum as FSCallDt_PartNum,T3.RevisionNum as FSCallDt_RevisionNum,T3.XPartNum as FSCallDt_XPartNum,T3.XRevisionNum as FSCallDt_XRevisionNum,T3.Calc_CProb,T3.Calc_fCallLine,T3.Calc_fCallNum,T3.Calc_InvoiceLine,T3.Calc_InvoiceNum, T4.Calc_InvoiceNum as FSCallMt_Calc_InvoiceNum,T4.Calc_MatNum,T4.Calc_MtPaNum,T4.Calc_MtQty,T4.Calc_MtBillPrice,T4.Calc_MtExtPrice,T4.Calc_MtLinedesc,T4.Calc_MtRevNum,T4.ResReasonCode, T4.Calc_MtCount,T5.RptLanguageID as Label_RptLanguageID,T5.Calc_ActDate as Label_Calc_ActDate,T5.Calc_CreditMemo as Label_Calc_CreditMemo, T5.Calc_Duration as Label_Calc_Duration,T5.Calc_JobNumber as Label_Calc_JobNumber,T5.Calc_LabDur as Label_Calc_LabDur,T5.Calc_Labor as Label_Calc_Labor,T5.Calc_MatDur as Label_Calc_MatDur,T5.RptLiteralsLMaterial as Label_Calc_Mate,T5.Calc_Misc as Label_Calc_Misc,T5.Calc_MiscDur as Label_Calc_MiscDur,T5.Calc_MtExtPrice as Label_Calc_MtExtPrice,T5.Calc_SerialNumber as Label_Calc_SerialNumber,T5.DepositCredit as Label_DepositCredit,T5.DocUnitPrice as Label_DocUnitPrice,T5.InvoiceLine as Label_InvoiceLine,T5.PONum as Label_PONum,T5.ProbReasonCode as Label_ProbReasonCode,T5.Reference as Label_Reference,T5.RptLiteralsLBckOrd,T5.RptLiteralsLBillTo ,T5.RptLiteralsLTWTotalTax ,T5.RptLiteralsLComeFrom ,T5.RptLiteralsLContinueInNext ,T5.RptLiteralsLCusPart ,T5.RptLiteralsLDate ,T5.RptLiteralsLEMaila ,T5.RptLiteralsLExtPrice,T5.RptLiteralsLTax ,T5.RptLiteralsLFax ,T5.RptLiteralsLFOB ,T5.RptLiteralsLHdng ,T5.RptLiteralsLInvoice ,T5.RptLiteralsLLegNum ,T5.RptLiteralsLLine ,T5.RptLiteralsLLineRef ,T5.RptLiteralsLof ,T5.RptLiteralsLOurPart ,T5.RptLiteralsLPackSlp ,T5.RptLiteralsLPage ,T5.RptLiteralsLPartDesc ,T5.RptLiteralsLPartRev ,T5.RptLiteralsLPhone ,T5.RptLiteralsLPONum ,T5.RptLiteralsLAULessDeposit ,T5.RptLiteralsLQty ,T5.RptLiteralsLQtyOrd ,T5.RptLiteralsLRev ,T5.RptLiteralsLLinesSubtotal ,T5.RptLiteralsLRounding ,T5.RptLiteralsLMiscChgs, T5.RptLiteralsLSalesKit ,T5.RptLiteralsLSeeBelow ,T5.RptLiteralsLShipTo ,T5.RptLiteralsLShpVia ,T5.RptLiteralsLSlsTxID ,T5.RptLiteralsLSoldToL ,T5.RptLiteralsLTotal ,T5.RptLiteralsLWarrantyA ,T5.RptLiteralsLWHCode ,T5.ShipDate as Label_ShipDate,T5.UnitPrice as Label_UnitPrice,T5.RptLiteralsLSEOCR ,T5.RptLiteralsLNOKID ,T5.RptLiteralsLDiscountPercent ,T5.RptLiteralsLVatNr ,T5.RptLiteralsLlessAdvBill, T1.Calc_CustFax, T6.EMailAddress, T6.FaxNum, T6.ResaleID, T5.RptLiteralsLOrdered as Label_Calc_DteOrdrd,T5.RptLiteralsLSalsRep as Label_Calc_SalesPerson,T5.RptLiteralsLTrms as Label_Calc_SalesTerms, T1.Calc_CustEMailAddress, T1.Calc_DropShipPackSlip, T7.InvoiceComment as FSContDt_InvoiceComment ,T7.ContractQty,T7.PricePerUnit,T7.DocPricePerUnit,T7.Calc_ContPrice, T5.PricePerCode as Label_PricePerCode, T5.PartNum as Label_PartNum,T5.ExtPrice as Label_ExtPrice, T1.Calc_PELegalText, T1.Calc_DocInvoiceAmt, T5.RptLiteralsLAmt, T5.Calc_SEBankRef as Label_Calc_SEBankRef, T1.Calc_TaxMethod, T1.SEBankRef, T1.Calc_LessPrepaidDeposits, T5.RptLiteralsLLessPrepDeposits, T7.ContractLine, T7.PartNum as ContractPartNum, T7.PartNum_PartDescription as ContractPartDescription, T7.ContractNum as ContractNum ,(CASE WHEN EXISTS(SELECT 1 FROM InvcChrg_" + Parameters!TableGuid.Value + " Tmp WHERE Tmp.Company = T1.Company AND Tmp.InvoiceNum= T1.InvoiceNum AND Tmp.InvoiceLine = T2.InvoiceLine) THEN 1 ELSE 0 END) AS 'HasFinCharges', (CASE WHEN T8.Description IS NOT NULL THEN 1 ELSE 0 END ) AS 'HasMiscCharges', T8.[Description], T8.DocMiscAmt, T8.SeqNum, T5.RptLiteralsLMiscChgs, T5.[Description] AS Label_Description,(CASE WHEN T8.SeqNum = T9.MinSeqNum THEN 1 ELSE 0 END ) AS DisplayLineInfo, T1.OrderNum, T6.TerritoryID,T6.CustID
FROM InvcHead
LEFT OUTER JOIN InvcDtl_" + Parameters!TableGuid.Value + " T2
ON T1.Company = T2.Company AND T1.InvoiceNum = T2.InvoiceNum
LEFT OUTER JOIN FSCallDt_" + Parameters!TableGuid.Value + " T3
ON T2.Company = T3.Company AND T2.InvoiceLine = T3.Calc_InvoiceLine AND T2.InvoiceNum = T3.Calc_InvoiceNum

ON T3.Company = T4.Company AND T3.CallNum = T4.CallNum AND T3.Calc_fCallLine = T4.Calc_fCallLine AND T3.Calc_InvoiceLine = T4.Calc_InvoiceLine AND T3.Calc_InvoiceNum = T4.Calc_InvoiceNum
LEFT OUTER JOIN RptLabels_" + Parameters!TableGuid.Value + " T5
ON T1.RptLanguageID = T5.RptLanguageID LEFT OUTER JOIN Customer_" + Parameters!TableGuid.Value + " T6
ON T1.Company = T6.Company AND T1.CustNum = T6.CustNum AND T1.InvoiceNum = T6.Calc_InvoiceNum
LEFT OUTER JOIN FSContDt_" + Parameters!TableGuid.Value + " T7
ON T2.Company = T7.Company AND T2.InvoiceLine = T7.Calc_InvoiceLine AND T2.InvoiceNum = T7.Calc_InvoiceNum 
LEFT OUTER JOIN InvcMisc_" + Parameters!TableGuid.Value + " T8
ON T1.Company = T8.Company AND T1.InvoiceNum = T8.InvoiceNum AND T2.InvoiceLine = T8.InvoiceLine 
LEFT OUTER JOIN
( SELECT  temp.Company, temp.InvoiceNum, temp.InvoiceLine, MIN(temp.SeqNum) as MinSeqNum 
FROM InvcMisc_" + Parameters!TableGuid.Value + "  temp
GROUP BY temp.Company, temp.InvoiceNum, temp.InvoiceLine) T9
ON T1.Company = T9.Company 
AND T1.InvoiceNum = T9.InvoiceNum 
AND T2.InvoiceLine = T9.InvoiceLine 
LEFT OUTER JOIN CustIC_" + Parameters!TableGuid.Value + " T10
ON T6.CustNum = T10.CustNum
ORDER BY  T1.InvoiceNum, T2.Calc_NextLegalNumID, T2.InvoiceLine, T8.SeqNum"


回答1:


To answer the first question there are two options,

  1. Add a group to your table that groups by all the columns that are repeated
  2. you can simply get the first value from the dataset. So where you might normally have a textbox expression set to something like =Fields!CustNum.Value you can use =FIRST(Fields!CustNum.Value). If the textbox is not inside a bound control (i.e. it's just a text box on its own somewhere in the report) then you may have to specify the dataset name too so something like

    =FIRST(Fields!CustNum.Value, "myDatasetName")

Note: You must include the quotes around the datasetname and it is case sensitive.

For the second question, you'll need to explain exactly what you want to do, will the box be against the category you want to highlight or will it against the customer only?



来源:https://stackoverflow.com/questions/59690346/ssrs-dataset-return-multiple-rows-intentionally-how-can-i-check-a-specifi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!