1、select裡面用for all entries in itab語句的話在之前要先對這個內錶itab進行是否為空判斷,即:if itab is initial的判斷!
2、select bukrs gjarh
into corresponding fields of table lt_data
注意這樣的寫法,要放足夠的字段去判別每一條資料是否一樣,否則就會導致本來要抓兩條數變成只抓到一條。
例如如果有兩條資料: a b c e 和a b d e 如果只select前面兩個字段,最終抓出來的結果就只有乙個!
3、select 裡面的and or巢狀例子:
select vbeln
posnn as posnr
vbelv
posnv
from vbfa
into table it_vbfa
for all entries in i_it_searvbrk
where vbeln = i_it_searvbrk-vbeln
and posnn = i_it_searvbrk-posnr
and ( vbtyp_v = 'c'
or vbtyp_v = 'k'
or vbtyp_v = 'l' )
and vbelv in s_vbeln
and posnv in s_posnr.
4、where條件的一些用法:
between的用法: where bldat between a and b
包含某個字元的where用法: 『%abc%' 字串裡面包含abc
』%abc『 字串往右包含abc
』abc%『 字串往左包含abc
in的用法: 可以是in s_bukrs(選擇螢幕),也可以是 in ('3001','3002')表示可以為3001到3002之間
5、也可以單獨抓某個字段放進乙個變數裡面的:
select single bukrs
into l_bukrs
select single bukrs vbeln
into (l_burks, l_vbeln)
6、join的用法:
select mkpf~mblnr mkpf~mjahr mseg~zeile mkpf~budat mkpf~xblnr
mseg~matnr mseg~rsnum mseg~rspos mseg~menge mseg~smbln
mseg~sjahr mseg~smblp mseg~bwart mseg~werks mkpf~bktxt
from mkpf join mseg
on mkpf~mblnr = mseg~mblnr
and mkpf~mjahr = mseg~mjahr
into corresponding fields of table imseg
where ( mkpf~budat between st_date and sy-datum )
and mkpf~mblnr ge cs_mblnr
and mkpf~mjahr ge st_year
and mseg~werks in werks
and mseg~rsnum ne space
and ( ( mseg~bwart = 'z33' and mseg~shkzg = 's' )
or ( mseg~bwart = 'z34' and mseg~shkzg = 'h' ) ).
7、select語句裡面的where條件,放空和 = ' '注意是不一樣的,如果select的時候需要用到一條索引,但是裡面的某個欄位你是不需要輸入的,這個時候你就要定義乙個選擇螢幕變數,這個可以作為不顯示出來或者是自己通過renge定義的,然後放到where裡面。
8、between語句在where條件的使用
l_dat = wa_bsis1-bldat - 75.
l_dat1 = wa_bsis1-bldat - 10.
select bukrs kunnr vbeln bldat belnr dmbtr
into corresponding fields of table it_bsid
from bsid
where bukrs = 'jp01'
and kunnr = wa_zjpvtu-zkunnr
and vbeln ne ' '
and bldat between l_dat and l_dat1.
9、抓取vbak表裡面1開頭的so:
select * form vbak into table where vbeln like '1%'.
或者是煮出來之後再判斷:
if vbak-vbeln(1) eq '1'.
10、強制使用索引(不建議使用):
11、用變數代替field,table和where條件:
其中變數都定義成string。
select (l_field) from (l_table_name) into where (l_where).
12、select endselect轉換成for all enterny的時候,抓出的資料不一致。
當select的字段不滿足表的key欄位的時候,資料會有不一致,例如:
a b c d 1 2 3
a b c e 1 2 3
表裡面有著兩條資料,然後抓資料的時候,只抓了a b c 1 2 3這六個字段,這個時候,抓出來的兩條資料就會變成1條。
13、抓取某個表裡面某個欄位a最大的時候的,b的值:
14、inner join,left join, right join:
編寫sql語句時,最重要的是什麼?
首先,弄清楚需求,接下來就是編寫了,最重要的就是選定 主表 這個很很重要,主表選錯了,可能就是無解或者就是寫出來的sql語句很複雜 在工作中遇到商家發貨位址和退貨位址的例項,之前資料都是存放在t shipping address表中,裡面既有商家收貨位址,發貨位址,還有買家的收貨位址,這樣比較亂,現...
思維者思路也什麼意思 訓練口才最重要的是訓練思路!
思路決定出路,思路也決定口才!口才不好的朋友往往思路比較單一,通常只會運用少數幾種簡單思路,所以與人交流時就容易出現思維短路 不知所措的現象。所以要訓練口才,最重要的就是要訓練思路!思路 可以理解為大腦在思考某乙個問題時所走的路徑。乙個人的思路受到性格 習慣 職業 性別 年齡 興趣愛好 品德修養 三...
Oracle 最基礎的一些語句
oracle中如何顯示當前的所有使用者表 顯示某使用者所有表 例如scott,必須大寫 select table name from all tables where owner scott 顯示當前的所有使用者表 select from user tables 顯示當前資料庫的所有表 select...