如何将此sql语句转换为abap语句?
基本上,这一系列sql语句在KUNR表类型上放置一个计数器,并显示该表中只显示一次的所有数字 SQL语句的漂亮打印版本此版本随附-以防漂亮打印机丢失一些重要细节:如何将此sql语句转换为abap语句?,abap,opensql,Abap,Opensql,基本上,这一系列sql语句在KUNR表类型上放置一个计数器,并显示该表中只显示一次的所有数字 SQL语句的漂亮打印版本此版本随附-以防漂亮打印机丢失一些重要细节: Select knvp.KUNNR, kna1.NAME1, knvp.PARVW, knvp.KUNN2 from landing.kna1 kna1, landing.knvp knvp, (Select kna1.KUNNR, COUNT(knvp.KUNN2) as count from landing.KNA1 kna1 ,
Select knvp.KUNNR, kna1.NAME1, knvp.PARVW, knvp.KUNN2
from landing.kna1 kna1,
landing.knvp knvp,
(Select kna1.KUNNR, COUNT(knvp.KUNN2) as count
from landing.KNA1 kna1
, landing.KNVP knvp
where kna1.KUNNR = knvp.KUNN2
and kna1.KTOKD in('ZPYR', 'ZBPR')
group by kna1.kunnr
having count(knvp.kunn2) < 2)as orphans
where kna1.KUNNR = knvp.KUNNR
and knvp.KUNNR = orphans.KUNNR
你可以试试
SELECT knvp.kunnr,
kna1.name1,
knvp.parvw,
knvp.kunn2
FROM landing.kna1 kna1,
landing.knvp knvp,
(SELECT kna1.kunnr,
Count(knvp.kunn2) AS count
FROM landing.kna1 kna1,
landing.knvp knvp
WHERE kna1.kunnr = knvp.kunn2
AND kna1.ktokd IN ( 'ZPYR', 'ZBPR' )
GROUP BY kna1.kunnr
HAVING Count(knvp.kunn2) < 2) AS orphans
WHERE kna1.kunnr = knvp.kunnr
AND knvp.kunnr = orphans.kunnr
im starting with this
rowNum col1 col2 col3 col4
1 1234 bp name1 1234
2 1234 py name1 1234
3 1223 bp name2 1223
4 1245 py name3 1245
5 5432 py name4 4432
i want to delete row# 1 and 2 because they have the same col1# but
different col2#
result:
rowNum col1 col2 col3 col4
1 1223 bp name2 1223
2 1245 py name3 1245
3 5432 py name4 5432
但是请注意,这主要是猜测,因为我根本不理解查询应该做什么
编辑:根据评论中的其他信息,您可能希望尝试以下操作:
SELECT knvp~kunnr
kna1~name1
knvp~parvw
knvp~kunn2
FROM kna1 JOIN knvp ON kna1~kunnr = knvp~kunnr
INTO TABLE lt_some_table_with_matching_structure
WHERE knvp~kunnr IN ( SELECT kna1~kunnr
FROM kna1 JOIN knvp ON kna1~kunnr = knvp~kunn2
WHERE ( kna1~ktokd = 'ZPYR' OR kna1~ktokd = 'ZBPR' )
GROUP BY kna1~kunnr
HAVING COUNT( DISTINCT knvp~kunn2 ) < 2 ).
请注意,在此步骤中不能选择KNVP~KUNN2,因为必须将其包含在GROUPBY子句中,否则HAVING子句将不起作用。
我现在没有可用的系统,所以这也是猜测…我可以想象,这是可能的,但是通常用一系列select命令和一些额外的变量来存储中间结果更容易解决。好的,你能给我举个例子吗?我是abap编程新手,我只编程了大约一个月。当你只想要一个abap响应时,为什么要用mysql和sql server来标记这个?我真的不知道sql语句的作用。我本来想请人解释一下它在做什么,但现在还没问。我可以告诉你它是干什么的——把所有试图破译它的人都弄糊涂了-它帮助了我,但是它给了我和我一样的代码结果……那么?我以为你希望它返回相同的结果?还是我误解了你的评论?这很有帮助,但它给了我与我相同的代码结果。这是拉和比较正确的数据,但没有给我的结果,我在寻找。我想用某种计数器来计算有一个搭档的KUNR。对于那些有一个合作伙伴连接到它的人,打印该kunnr。我现在得到的信息都是KUNR,有两个合作伙伴连接到他们身上,我试图找到一种方法,只要找出KUNR,有一个合作伙伴连接到他们身上。我正在努力让它工作,我会让你知道它是如何工作的。你好,vwegert,我尝试了这个解决方案和解决方案的一个修改部分,但它仍然没有给我我想要的答案,我想我会说明我从什么开始,我想用什么结束。
DATA: lt_partners TYPE TABLE OF kunnr. " unsure whether this is the correct type
SELECT kunnr
FROM kna1
INTO TABLE lt_partners
WHERE ( kna1~ktokd = 'ZPYR' OR kna1~ktokd = 'ZBPR' ).
" AND probably some other filter criteria
SORT lt_partners.
DELETE ADJACENT DUPLICATES FROM lt_partners. " avoid DISTINCT if you can to take load off the database
IF lt_partners IS NOT INITIAL.
SELECT knvp~kunnr
kna1~name1
knvp~parvw
FROM kna1 JOIN knvp ON kna1~kunnr = knvp~kunnr
INTO TABLE lt_some_table_with_matching_structure
FOR ALL ENTRIES IN lt_partners
WHERE knvp~kunn2 = lt_partners-table_line
GROUP BY knvp~kunnr kna1~name1 knvp~parvw
HAVING COUNT( DISTINCT knvp~kunn2 ) < 2.
ENDIF.