Sql 隐藏行中IIF表达式上的可见行值?

Sql 隐藏行中IIF表达式上的可见行值?,sql,hidden-field,iif,ssrs-expression,Sql,Hidden Field,Iif,Ssrs Expression,在我的特定场景(屏幕截图)中,报告显示发货(步骤1),然后显示发票(步骤2)。我想把所有这些信息放在一行。当POP_类型=发货时,我需要隐藏该行,但如何在POP_类型=发票行中获取发货数量和采购价格值?棘手的是,采购价格值和发票价格值是同一个字段,它正在更改POP_类型的值,即装运或发票。有什么想法或说法可以解决这个问题吗 以下是报告的实际系统生成代码: select [ASIEXP28].[receiptdate] AS 'Receipt Date', [ASIEXP28].[POPRCTNM

在我的特定场景(屏幕截图)中,报告显示发货(步骤1),然后显示发票(步骤2)。我想把所有这些信息放在一行。当POP_类型=发货时,我需要隐藏该行,但如何在POP_类型=发票行中获取发货数量和采购价格值?棘手的是,采购价格值和发票价格值是同一个字段,它正在更改POP_类型的值,即装运或发票。有什么想法或说法可以解决这个问题吗

以下是报告的实际系统生成代码:

select [ASIEXP28].[receiptdate] AS 'Receipt Date',
[ASIEXP28].[POPRCTNM] AS 'POP Receipt Number',
[ASIEXP28].[BACHNUMB] AS 'Batch Number',
[ASIEXP28].[PONUMBER] AS 'PO Number',
[ASIEXP28].[VNDDOCNM] AS 'Vendor Document Number',
[ASIEXP28].[VENDORID] AS 'Vendor ID',
RA.dbo.DYN_FUNC_POP_Type([ASIEXP28].POPTYPE) AS 'POP Type',
[ASIEXP28].[ITEMNMBR] AS 'Item Number',
[ASIEXP28].[ITEMDESC] AS 'Item Description',
[ASIEXP28].[UOFM] AS 'U Of M',
[ASIV0001].[QTYSHPPD] AS 'QTY Shipped',
[ASIV0001].[QTYINVCD] AS 'QTY Invoiced',
[ASIV0001].[QTYMATCH] AS 'QTY Matched',
[ASIEXP28].[LOCNCODE] AS 'Location Code',
(CASE WHEN [ASIEXP28].[UNITCOST]<0 THEN '-'+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR(abs([ASIEXP28].[UNITCOST]),100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')))) ELSE(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR([ASIEXP28].[UNITCOST],100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))))+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) <> 0  THEN (SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+RTRIM(CRNCYSYM) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) END) AS 'Unit Cost',
(CASE WHEN [ASIEXP28].[EXTDCOST]<0 THEN '-'+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR(abs([ASIEXP28].[EXTDCOST]),100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')))) ELSE(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 0  THEN RTRIM(CRNCYSYM)+(SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+LTRIM(STR([ASIEXP28].[EXTDCOST],100,(SELECT DECPLCUR-1 FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))))+(SELECT CASE WHEN (SELECT CYSYMPLC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) <> 0  THEN (SELECT CASE WHEN (SELECT INCLSPAC FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) = 1  THEN ' ' ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR'))+RTRIM(CRNCYSYM) ELSE '' END FROM DYNAMICS..MC40200 WHERE CURNCYID = ISNULL(NULLIF([ASIEXP28].[CURNCYID],''),'PKR')) END) AS 'Extended Cost',
[ASIEXP28].[USER2ENT] AS 'User To Enter',
[ASIEXP28].PSTGSTUS AS 'Posting Status',
[ASIEXP28].[PTDUSRID] AS 'Posted User ID' from RA..[ASIEXP28]
left join RA..[ASIV0001] on [ASIEXP28].[POPRCTNM] = [ASIV0001].[POPRCTNM] and 
[ASIEXP28].[RCPTLNNM]=[ASIV0001].[RCPTLNNM]
WHERE ([ASIEXP28].[receiptdate] BETWEEN @DFrom AND @DTo) ORDER BY [ASIEXP28].[PONUMBER]
选择[ASIEXP28]。[receiptdate]作为“接收日期”,
[ASIEXP28]。[POPRCTNM]作为“POP收据编号”,
[ASIEXP28]。[BACHNUMB]作为“批号”,
[ASIEXP28]。[PONUMBER]作为“采购订单编号”,
[ASIEXP28]。[VNDOCNM]作为“供应商文件编号”,
[ASIEXP28]。[VENDORID]作为“供应商ID”,
RA.dbo.DYN_FUNC_POP_Type([ASIEXP28].POPTYPE)作为“POP Type”,
[ASIEXP28]。[ITEMNMBR]作为“项目编号”,
[ASIEXP28]。[ITEMDESC]作为“项目说明”,
[ASIEXP28]。[UOFM]作为“M的U”,
[ASIV0001]。[QTYSHPPD]作为“装运数量”,
[ASIV0001]。[QTYINVCD]作为“发票数量”,
[ASIV0001]。[QTYMATCH]作为“匹配数量”,
[ASIEXP28]。[LOCNCODE]作为“位置代码”,
(当[ASIEXP28].[UNITCOST]考虑您的问题时,
您需要实现两件事,隐藏POP_类型=发票的行,并显示来自相同PO编号但POP_类型=发票的发货数量和采购价格

注意:当我给出您的想法时,可能会出现拼写错误、语法错误或字段名更改,并且在本地我使用了不同的字段名进行测试

在SSRS中隐藏一行是非常直接的

除非我遗漏了一些细微差别,否则您只需基于该值设置行可见性

在详图线上单击鼠标右键,然后选择“行可见性…”

在弹出的窗口中,选择“基于表达式显示”或“隐藏”

在该表达式中,您将使用如下逻辑

=Fields!POP_TYPE=INVOICE
现在是棘手的部分,您需要相同的采购订单号,但pop_类型=发票

这是你应该用的

转到“发货数量”单元格,右键单击并选择“表达式”

查找(源表达式、目标表达式、结果表达式、数据集)

你的情况就是这样

=Lookup(Fields!PONumber.Value & "Shipment", Fields!PONumber.Value & Fields!POPType.Value, Fields!qtyshipped.Value, "DataSet1") 
列/单元购买价格相同

=Lookup(Fields!PONumber.Value & "ship",Fields!PONumber.Value & Fields!POPType.Value,Fields!PurchasePrice.Value,"DataSet1")
我在当地试过,结果如下


我将您的问题标记为“太宽”,因为您不需要提供架构或一些示例数据。您应该缩小您的问题范围。而且,老实说,我在这里没有看到实际的问题。这似乎是垃圾邮件。好的,我刚刚编辑了我的问题,现在它非常具体,带有屏幕截图进行解释。这里的大多数人都想要示例表数据将预期结果显示为格式化文本,而不是屏幕截图或链接。将示例数据显示为文本是一种常见做法,在dba.stackexchange中有提及。如果您没有时间正确提问,我认为只有最有耐心的人才有时间回答。是的,我已根据给定的指导原则更新了问题。我相信现在是这样了这是按要求的。