<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大大毛 的筆記

      DDM's Note

    哪怕沒有辦法一定有說法,
    就算沒有鴿子一定有烏鴉,
    固執(zhí)無罪 夢(mèng)想有價(jià),
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁 ::  :: 聯(lián)系 ::  :: 管理

    問題

    ??????通常來說實(shí)現(xiàn)表級(jí)的關(guān)聯(lián)以及在列之間實(shí)現(xiàn)運(yùn)算還算是比較容易,可是利用SQL來實(shí)現(xiàn)行間的關(guān)聯(lián)運(yùn)算就顯得比較困難,這裏就一個(gè)實(shí)例來解析如何來思考及解決此類的問題。

    表結(jié)構(gòu)

    ??????表結(jié)構(gòu)說明
    ?????????kID???????????????主關(guān)鍵字,例如合約號(hào)
    ?????????iYear????????????第幾年度( >= 1),連續(xù)遞增
    ?????????iTime???????????第幾期[1, 12],連續(xù)遞增,根據(jù)付款方式有所不同
    ?????????D1??????????????????開始日期,數(shù)字類型的民國日期
    ?????????PayMode???付款方式,取值 A--年繳,S--半年繳,Q--季繳,M--月繳
    ??????要求
    ?????????找到那些 D1 有問題的合約。因?yàn)楦鶕?jù)PayMode來說相同 kID?的 D1 變化是存在有規(guī)律的,例如如果是A--年繳則應(yīng)該是一年一跳,M--月繳則應(yīng)該是一個(gè)月一跳,因此要找到那些跳的間隔有錯(cuò)的合約。
    ??????數(shù)據(jù)現(xiàn)狀
    ?????????iYear / iTime?兩列上的數(shù)據(jù)就很亂,有跳期的現(xiàn)象存在,例如月繳1年1期--1年3期。
    ?????????D1 列上有誤,例如月繳方式下??950505 -- 950718?(正確應(yīng)該是950505 -- 959604)

    ??????表結(jié)構(gòu)與
    我的上一篇 ?示例2中所用表完全相同,只不過上一篇是為了找出年度+月份不連續(xù)的問題件,而這裏則是要解決數(shù)據(jù)行Row之間的對(duì)比,不過這一次還是要用到上回講述到的那些解決方案,只不過要更加複雜。


    思考

    ??????1. 要達(dá)到間隔的計(jì)算,就要實(shí)現(xiàn)行間數(shù)據(jù)的對(duì)比,因此大體的思路應(yīng)該是使用自連接的方式來完成。
    ??????2. 根據(jù)數(shù)據(jù)現(xiàn)狀可以看出,上一篇中提到的將 iYear + iTime 兩列合併的方案已經(jīng)不可用,因?yàn)楦鶕?jù)現(xiàn)狀這兩列雖然保持唯一和增加,但是增加的 Step(步長) 已經(jīng)不可信任。根據(jù)自連接的特點(diǎn),我們必須找到一個(gè)絕對(duì)可以信賴的遞增列,然後再在該列上實(shí)現(xiàn)自連接,問題是這一列該如何選取呢?
    ??????3. D1 列是數(shù)字值的民國日期,要用日期的間隔來判斷需要先將該列轉(zhuǎn)換成正常的西元日期型列才可以實(shí)現(xiàn)。


    解決方法

    ??????1. 找到那個(gè) Step 可以信賴的遞增列。
    ?????????既然 iYear + iTime?的 Step 不可信賴可是兩列唯一和增加還是可用的,因?yàn)榭梢杂?自行構(gòu)建Identity的方法?來據(jù)此生成一個(gè)可用的 Identity 列。
    ??????2. D1的西元日期型轉(zhuǎn)換,可以用 幾個(gè)用於SQL的日期轉(zhuǎn)換函數(shù)(vb) 中功能2所示的 parseDate(strSQL) 來實(shí)現(xiàn)。
    ??????3. 問題日期的間隔這裏只簡單的按大於32天/月來判斷。

    SQL語句
    SQL語句

    ?????????從該SQL語句可以看到為了實(shí)現(xiàn)自連接,構(gòu)建了2張表 AL(2-14行) 和 AR(16-28行),兩表的內(nèi)容完全一致,中間使用了自定義 Identity 列 Index1 (4-11行) ,然後再將AL 與 AR 實(shí)現(xiàn)錯(cuò)值連接(29行)。
    ?????????對(duì)連接後表記錄的日期間隔運(yùn)算,放在Where子句中(30-38行),這裏寫的是僞語句,需要用前面提到的 VB函數(shù)轉(zhuǎn)換才可以運(yùn)行,不過這樣看起來就會(huì)明子許多。


    ?????????可以看到,只要在處理裏靈活運(yùn)用各種技巧就可以解決更加複雜的邏輯。

    i am ddm

    主站蜘蛛池模板: 91黑丝国产线观看免费| 免费一级毛片在线播放视频免费观看永久 | 亚洲综合无码无在线观看| 亚洲国产日韩女人aaaaaa毛片在线 | 美女内射无套日韩免费播放| 免费黄网站在线观看| 国产免费无码一区二区| 国产免费爽爽视频在线观看| 免费无遮挡无码永久视频| 无码日韩精品一区二区免费暖暖| 免费国产叼嘿视频大全网站| 久久综合国产乱子伦精品免费| 人妻丰满熟妇无码区免费| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲免费视频播放| 无码国产精品久久一区免费 | 国产精品美女久久久免费| 成人性做爰aaa片免费看| 一级毛片在线免费看| 免费成人激情视频| 无码一区二区三区免费视频| 色妞WWW精品免费视频| 在线观看永久免费视频网站| 亚洲国产精品综合久久一线| 亚洲亚洲人成综合网络| 亚洲美女一区二区三区| youjizz亚洲| 视频免费1区二区三区| 久久99免费视频| 69天堂人成无码麻豆免费视频| 国产精品视频免费一区二区| 亚洲av成人一区二区三区在线观看 | 国产一级一毛免费黄片| 2022久久国产精品免费热麻豆| 好爽又高潮了毛片免费下载| 亚洲av午夜成人片精品电影| 亚洲va久久久噜噜噜久久男同| 亚洲av无码一区二区三区天堂古代 | 亚洲麻豆精品国偷自产在线91| 亚洲成人动漫在线| 亚洲自偷自偷在线成人网站传媒|