Sql Server 2008單個存儲過程統計多個信息

SqlServer2008

1.前言

近來用SQLServer2008實現了單個存儲過程對一個表多個信息的統計功能,感覺很有意思,特此整理成文。


2.前驅知識

SQLServer2008里面,可以直接用Select將數據查詢出來

比如說select '2016年11月15日22:53:58' 我的寫作時間
執行的結果為

執行查詢的結果

那么便可以利用這個特性,來統計一個表的多個信息


3.栗子一枚

3.1需求

用一個存儲過程統計男生的個數、女生的個數、一班人數、二班人數


3.2實現

為了簡化操作,假設學生信息表內只有學號,姓名,性別,班級號

3.2.1建表

CREATE TABLE Student (
    ID  nchar (10) NOT NULL,
    name  nchar (10) NOT NULL,
    sex  nchar (2) NOT NULL,
    classid  nchar (10) NOT NULL
)

3.2.2插入數據

INSERT INTO  Student(ID,name,sex,classid) VALUES (N'001',N'張三',N'男',N'002')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'2',N'李四',N'男',N'2')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'3',N'李四',N'男',N'2')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'4',N'李四',N'男',N'2')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'5',N'希拉里',N'女',N'2')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'6',N'希拉里',N'女',N'1')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'7',N'林黛玉',N'女',N'1')
INSERT INTO  Student(ID,name,sex,classid) VALUES (N'8',N'薛寶釵',N'女',N'1')

3.2.3創建存儲過程

-- =============================================
-- Author:      <Stone6762>
-- Create date: <2016年11月15日22:48:56>
-- Description: <學生類的統計信息>
-- =============================================
CREATE PROCEDURE [dbo].[Select_Count_Student]
AS
BEGIN
    select 
            (select count(ID) from student where sex='男') boyNumber,
            (select count(ID) from student where sex='女') girlNumber,
            (select count(ID) from student where classid=1) class1Number,
            (select count(ID) from student where classid=2) class2Number;
END

3.2.4執行存儲過程

執行的結果

3.3程序調用(以C#調用為例)

public static void Select_Count_Student()
        {
            SqlConnection myConnection = new SqlConnection(@"server=;uid=;pwd=;database=;Trusted_Connection=no");
            SqlCommand MyCommand = new SqlCommand("Select_Count_Student", myConnection); //定義一個數據庫操作指令
            MyCommand.CommandType = CommandType.StoredProcedure;//設置該語句是讀取存儲過程的
            SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定義一個數據適配器
            SelectAdapter.SelectCommand = MyCommand;//定義數據適配器的操作指令
            try  {
                myConnection.Open();//打開數據庫連接
                SelectAdapter.SelectCommand.ExecuteNonQuery();//執行數據庫查詢指令
                myConnection.Close();//關閉數據庫
            } catch (Exception e){
                throw new Exception(e.ToString());
            }
            DataSet MyDataSet = new DataSet();//定義一個數據集
            SelectAdapter.Fill(MyDataSet);//填充數據集
            DataTable dt = MyDataSet.Tables[0];//獲取查詢的結果表(因為只有一個)
            int boyNumber = (int)dt.Rows[0]["boyNumber"];
            int girlNumber = (int)dt.Rows[0]["girlNumber"];
            int Class1Number = (int)dt.Rows[0]["class1Number"];
            int Class2Number = (int)dt.Rows[0]["class2Number"];
            Console.WriteLine("男生人數:"+boyNumber);
            Console.WriteLine("女生人數:" + girlNumber);
            Console.WriteLine("一班人數:" + Class1Number);
            Console.WriteLine("二班人數:" + Class2Number);
            Console.ReadKey();
        }

您的每一個喜歡,都是我創作的動力


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,739評論 18 399
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,832評論 0 11
  • 什么是SQL數據庫: SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,836評論 0 10
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,248評論 0 7
  • 她需要靜下來。 她看了為數不多的書,去網上尋找怎么寫書評,如何更好地閱讀的建議,她開始重新翻開那本書,拿著筆,希望...
    當當當七閱讀 349評論 0 1