子查询在where子句中的变量

2020-09-26 00:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我对以下查询有一些疑问:

用户需要选择客户。

如果我像这样手动将客户名称放在where子句(表'a')中,查询工作正常:'%customer%'

但是它不适用于变量:'%[%0]%'

我该如何解决?

谢谢。

从*中选择*

 -拉门
 选择不同
 'A'为'Belegart',
 notull(t10.Number,'')AS'KO-Nr。 SAP',
 notull(t10.U_docnumold,'')AS'BW-Nr。',
 ''AS'Rg.-Nr.',
 t10.StartDate AS'Belegdat',
 t10.EndDate AS'Enddat。',
 t10.BpCode AS'Kundennr。',
 t10.BpName AS'Kunde',
 t11.ItemCode AS'Artikel',
 t11.ItemName AS'Artikelbez。',
 t12.FrgnName AS'Bez。  2',
 t11.UnitPrice AS'VK-Preis',
 t11。货币AS'Währung',
 t11.PlanQty AS'KO-Menge',
 notull(t11.U_rest,1)AS'Menge',
 notull(t10.U_FWKursKopf,0)AS'Kurs',
 t71.PymntGroup AS [Zahlungsbed。],

 案件
 什么时候
 t10.U_FWKursKopf ='0'
 然后t11.U_rest * t11.UnitPrice
 ELSE t11.U_rest * t11.UnitPrice/t10.U_FWKursKopf
 END设为[Warenwert EUR]
 
 从OOAT T10
 内连接燕麦1 t11
 开启t10.AbsID = t11.AgrNo
 内部联接OITM t12
 开启t11.ItemCode = t12.ItemCode
 左联接OCRD t70打开t70.CardCode = t10.BpCode
 内联接OCTG t71在t70.GroupNum = t71.GroupNum

 在t10.BpCode> = 80000且
 T10。[状态] ='A'并且
 T10。[状态] <>'C'和
 T11。[LineStatus] ='O'AND
 无效(t11.U_rest,0)>'0'

 全联盟

 选择
 " WE"为" Belegart",

 案件
 当t1.AgrNo不为空时,则t51.number
 ELSE t1.U_rahmen
 END AS'KO-Nr。 SAP',

 案件
 当t1.AgrNo不为空时
 (
 选择
 案件
 当t20.u_docnumold <>''时t20.u_docnumold
 否则t20.number
 结束
 来自OOAT t20 WHERE t1.AgrNo = t20.AbsID
 )
 当t1.AgrNo为NULL或t1.AgrNo ='0'时
 (
 选择
 案件
 当t20.u_docnumold <>''时t20.u_docnumold
 否则t20.number
 结束
 来自OOAT t20 WHERE t1.U_rahmen = t20.AbsID
 )
 其他0
 结束为" BW-Nr。",
 notull(T0。[DocNum],'')AS'Rg.-Nr.',

 T0。[DocDate] AS'Belegdat。',
 空AS'Enddat。',
 T0。[CardCode] AS'Kundennr。',
 T0。[CardName] AS'Kunde',
 T1。[ItemCode] AS'Artikel',
 T2.ItemName AS'Artikelbez。',
 T2.FrgnName AS'Bez。  2',
 T1。[价格] AS'VK-Preis',
 T1。[Currency] AS'Währung',
 0 AS'KO-Menge',
 T1。[Quantity] AS'Menge',
 notull(t1.Rate,1)AS'Kurs',
 t61.PymntGroup AS [Zahlungsbed。],


 案件
 什么时候
 t1.Rate ='0'
 然后T1。[数量] * T1。[价格]
 ELSE T1。[数量] * T1。[价格]/t1。费率
 END设为[Warenwert EUR]


 从OPDN T0
 内连接PDN1 T1
 开启T0。[DocEntry] = T1。[DocEntry]
 内部联接OITM T2
 开启T1。[ItemCode] = T2。[ItemCode]
 左外连接桶t51在t1.AgrNo = t51.AbsID上
 -LEFT JOIN OAT1 t52在t52.AgrNo = t51.AbsID
 左联接OCRD t60在T0.CardCode = t60.CardCode
 内联接OCTG t61在t60.GroupNum = t61.GroupNum

 其中T0。[CANCELED] ='N'

 ) 作为一个


 哪里
 a。[Kunde] Like'%[%0]%'


 由'Kundennr。','Artikel','Belegart'asc,'Belegdat.'asc,'KO-Nr。  SAP'ASC
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我对以下查询有一些疑问:

用户需要选择客户。

如果我像这样手动将客户名称放在where子句(表'a')中,查询工作正常:'%customer%'

但是它不适用于变量:'%[%0]%'

我该如何解决?

谢谢。

从*中选择*

 -拉门
 选择不同
 'A'为'Belegart',
 notull(t10.Number,'')AS'KO-Nr。 SAP',
 notull(t10.U_docnumold,'')AS'BW-Nr。',
 ''AS'Rg.-Nr.',
 t10.StartDate AS'Belegdat',
 t10.EndDate AS'Enddat。',
 t10.BpCode AS'Kundennr。',
 t10.BpName AS'Kunde',
 t11.ItemCode AS'Artikel',
 t11.ItemName AS'Artikelbez。',
 t12.FrgnName AS'Bez。  2',
 t11.UnitPrice AS'VK-Preis',
 t11。货币AS'Währung',
 t11.PlanQty AS'KO-Menge',
 notull(t11.U_rest,1)AS'Menge',
 notull(t10.U_FWKursKopf,0)AS'Kurs',
 t71.PymntGroup AS [Zahlungsbed。],

 案件
 什么时候
 t10.U_FWKursKopf ='0'
 然后t11.U_rest * t11.UnitPrice
 ELSE t11.U_rest * t11.UnitPrice/t10.U_FWKursKopf
 END设为[Warenwert EUR]
 
 从OOAT T10
 内连接燕麦1 t11
 开启t10.AbsID = t11.AgrNo
 内部联接OITM t12
 开启t11.ItemCode = t12.ItemCode
 左联接OCRD t70打开t70.CardCode = t10.BpCode
 内联接OCTG t71在t70.GroupNum = t71.GroupNum

 在t10.BpCode> = 80000且
 T10。[状态] ='A'并且
 T10。[状态] <>'C'和
 T11。[LineStatus] ='O'AND
 无效(t11.U_rest,0)>'0'

 全联盟

 选择
 " WE"为" Belegart",

 案件
 当t1.AgrNo不为空时,则t51.number
 ELSE t1.U_rahmen
 END AS'KO-Nr。 SAP',

 案件
 当t1.AgrNo不为空时
 (
 选择
 案件
 当t20.u_docnumold <>''时t20.u_docnumold
 否则t20.number
 结束
 来自OOAT t20 WHERE t1.AgrNo = t20.AbsID
 )
 当t1.AgrNo为NULL或t1.AgrNo ='0'时
 (
 选择
 案件
 当t20.u_docnumold <>''时t20.u_docnumold
 否则t20.number
 结束
 来自OOAT t20 WHERE t1.U_rahmen = t20.AbsID
 )
 其他0
 结束为" BW-Nr。",
 notull(T0。[DocNum],'')AS'Rg.-Nr.',

 T0。[DocDate] AS'Belegdat。',
 空AS'Enddat。',
 T0。[CardCode] AS'Kundennr。',
 T0。[CardName] AS'Kunde',
 T1。[ItemCode] AS'Artikel',
 T2.ItemName AS'Artikelbez。',
 T2.FrgnName AS'Bez。  2',
 T1。[价格] AS'VK-Preis',
 T1。[Currency] AS'Währung',
 0 AS'KO-Menge',
 T1。[Quantity] AS'Menge',
 notull(t1.Rate,1)AS'Kurs',
 t61.PymntGroup AS [Zahlungsbed。],


 案件
 什么时候
 t1.Rate ='0'
 然后T1。[数量] * T1。[价格]
 ELSE T1。[数量] * T1。[价格]/t1。费率
 END设为[Warenwert EUR]


 从OPDN T0
 内连接PDN1 T1
 开启T0。[DocEntry] = T1。[DocEntry]
 内部联接OITM T2
 开启T1。[ItemCode] = T2。[ItemCode]
 左外连接桶t51在t1.AgrNo = t51.AbsID上
 -LEFT JOIN OAT1 t52在t52.AgrNo = t51.AbsID
 左联接OCRD t60在T0.CardCode = t60.CardCode
 内联接OCTG t61在t60.GroupNum = t61.GroupNum

 其中T0。[CANCELED] ='N'

 ) 作为一个


 哪里
 a。[Kunde] Like'%[%0]%'


 由'Kundennr。','Artikel','Belegart'asc,'Belegdat.'asc,'KO-Nr。  SAP'ASC
 
付费偷看设置
发送
1条回答
CPLASF-自律
1楼-- · 2020-09-26 01:07

您需要在选择查询之外声明变量,并将[%0]链接到该变量。

然后在查询中调用变量。

例如:

将@acctname声明为varchar(100)

设置@ acctname =(从oact a中选择max(a.acctname),其中a.acctname如'%[%0]%')

从oact x中选择x.AcctName,x.AcctCode,其中x.AcctName = @ acctname

一周热门 更多>