日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

交叉表

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交叉表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看看交叉表什么樣子:

“交叉表”對象是一個網格,用來根據指定的條件返回值。數據顯示在壓縮行和列中。這種格式易于比較數據并辨別其趨勢。它由三個元素組成:

摘要字

  • “交叉表”中的行沿水平方向延伸(從一側到另一側)。在上面的示例中,“手套”(Gloves) 是一行。
  • “交叉表”中的列沿垂直方向延伸(上下)。在上面的示例中,“美國”(USA) 是一列。
  • 匯總字段位于行和列的交叉處。每個交叉處的值代表對既滿足行條件又滿足列條件的記錄的匯總(求和、計數等)。在上面的示例中,“手套”和“美國”交叉處的值是四,這是在美國銷售的手套的數量

下面實現一個例子:

有一個表:??
BH????????????GZLB??????????JE??
----------------------??
001????????????A??????????????100??
001????????????B??????????????150??
001????????????C??????????????110??
002????????????A??????????????99??
002????????????B??????????????180??
002????????????C??????????????150??
003????????????A??????????????160??
003????????????B??????????????170??
003????????????C??????????????130??
用SQL語句如何將上面的表變成下面橫向的排列方式呢。??
BH????????A??????B??????C??
-------------------??
001????100????150??110??
002????99??????180??150??
003????160????170??130????????
(GZLB??里面的字段是動態的,不是只有A,B,C??可能還有A,B,C,D,E...)??

準備數據:


if??exists(select??name??from??sysobjects??where??name='tblA'??and??xtype='U')??
?????drop??table??tblA??
?
create??table??tblA(??
???BH??char(3)??not??null,??
???GZLB??varchar(3)??not??null,??
???JE??int??not??null??
)??
go??
?
insert??tblA??values('001',????????????'A',??????????????100)??
insert??tblA??values('001',????????????'B',??????????????150)??
insert??tblA??values('001',????????????'C',??????????????110)??
insert??tblA??values('002',????????????'A',??????????????99)??
insert??tblA??values('002',????????????'B',??????????????180)??
insert??tblA??values('002',????????????'C',??????????????150)??
insert??tblA??values('003',????????????'A',??????????????160)??
insert??tblA??values('003',????????????'B',??????????????170)??
insert??tblA??values('003',????????????'C',??????????????130)??
查詢sql語句如下:?

select?max(case?GZLB?when?'A'?then?JE?else?null?end) as?'A',

?????? ?max(case?GZLB?when?'B'?then?JE?else?null?end)?as?'B',

?????? ?max(case?GZLB?when?'C'?then?JE?else?null?end)?as?'C'?from?tblA?group?by?BH // 每個case只能得到一個數據,所以用max聚合函數的目的是對了配合后面的group by ,否則會出錯(GZLB, JE不在group by 或者聚合函數中的錯誤)

當然這樣還沒有進行相關的統計只是把表行變列了,下會分解吧

?

?

轉載于:https://www.cnblogs.com/gaiyang/archive/2011/04/12/2013930.html

總結

以上是生活随笔為你收集整理的交叉表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。