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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    交叉表(Cross Table)的基本特點(diǎn)是具有橫縱兩個(gè)自由延展的維度,而平面表結(jié)構(gòu)只有一個(gè)可延展的維度,因?yàn)槠矫姹淼牧忻土袛?shù)是確定的。例如,地區(qū)的產(chǎn)品銷售數(shù)量,在平面表中表達(dá)為
    district_id product_id sell_num
    如果表現(xiàn)為交叉表,則為
               productA  productB
    districtA   sellNum   sellNum
    districtB   sellNum   sellNum
    這種結(jié)構(gòu)上的失配需要通過程序邏輯來進(jìn)行調(diào)整。

    注意到平面表結(jié)構(gòu)只具有一個(gè)可延展的維度,而join可以看作是該維度上的連接操作。因此我們可以將交叉表看作是多個(gè)簡(jiǎn)單平面表結(jié)構(gòu)并置的結(jié)果。即分解為
    A:        
               productA
    districtA   sellNum
    districtB   sellNum

    B:
               productB
    districtA   sellNum
    districtB   sellNum

    橫向維度的擴(kuò)展在程序中表達(dá)。

    SqlInfo結(jié)構(gòu)封裝了這種簡(jiǎn)單平面表的分解片斷。
    class SqlInfo{
        List fieldNames;
        SQL sql;
        String keyField;
    }

    我們?cè)诔绦蛑型ㄟ^JoinBuilder來實(shí)現(xiàn)橫向維度的構(gòu)造
    JoinBuilder.begin(sqlInfoA)
               .join(sqlInfB)
               .leftJoin(sqlInfoC)
               .end();
    生成的sql語句示例如下
    select sqlInfoA.fieldNames, sqlInfoB.fieldNames
    from sqlInfoA.sql join sqlInfoB.sql
    on sqlInfoA.keyField = sqlInfoB.keyField

    主站蜘蛛池模板: 久久国产免费直播| 亚洲精品在线播放| 亚洲乱码国产一区网址| 国产成人免费A在线视频| 天天看片天天爽_免费播放| 成年轻人网站色免费看| 成人免费毛片内射美女APP| 国产精品视频免费一区二区| 一个人免费高清在线观看| 成人毛片手机版免费看| 四虎在线免费播放| 国产嫩草影院精品免费网址| 日本一区二区三区日本免费| 免费观看午夜在线欧差毛片| 亚洲福利精品一区二区三区 | 免费人妻精品一区二区三区| 美女黄网站人色视频免费| 四虎影视久久久免费观看| 中文字幕免费观看视频| a级大片免费观看| 久久久久久毛片免费播放| 精品免费久久久久久久| 成人看的午夜免费毛片| 亚洲AV中文无码乱人伦| 九月丁香婷婷亚洲综合色| 2022年亚洲午夜一区二区福利| 亚洲伊人久久大香线蕉| 亚洲成av人无码亚洲成av人 | 亚洲AV无码专区在线播放中文| 久久久婷婷五月亚洲97号色| 亚洲自国产拍揄拍| 美女免费视频一区二区三区| 精品国产呦系列在线观看免费| 久久免费精彩视频| 久久久久久国产精品免费免费| 国产又大又粗又硬又长免费| 中文字幕精品亚洲无线码二区 | 亚洲国产高清精品线久久| 亚洲动漫精品无码av天堂| 亚洲一线产区二线产区精华| 在线播放亚洲精品|