Sql Server 2008單個(gè)存儲(chǔ)過(guò)程統(tǒng)計(jì)多個(gè)信息

SqlServer2008

1.前言

近來(lái)用SQLServer2008實(shí)現(xiàn)了單個(gè)存儲(chǔ)過(guò)程對(duì)一個(gè)表多個(gè)信息的統(tǒng)計(jì)功能,感覺(jué)很有意思,特此整理成文。


2.前驅(qū)知識(shí)

SQLServer2008里面,可以直接用Select將數(shù)據(jù)查詢(xún)出來(lái)

比如說(shuō)select '2016年11月15日22:53:58' 我的寫(xiě)作時(shí)間
執(zhí)行的結(jié)果為

執(zhí)行查詢(xún)的結(jié)果

那么便可以利用這個(gè)特性,來(lái)統(tǒng)計(jì)一個(gè)表的多個(gè)信息


3.栗子一枚

3.1需求

用一個(gè)存儲(chǔ)過(guò)程統(tǒng)計(jì)男生的個(gè)數(shù)、女生的個(gè)數(shù)、一班人數(shù)、二班人數(shù)


3.2實(shí)現(xiàn)

為了簡(jiǎn)化操作,假設(shè)學(xué)生信息表內(nèi)只有學(xué)號(hào),姓名,性別,班級(jí)號(hào)

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插入數(shù)據(jù)

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創(chuàng)建存儲(chǔ)過(guò)程

-- =============================================
-- Author:      <Stone6762>
-- Create date: <2016年11月15日22:48:56>
-- Description: <學(xué)生類(lèi)的統(tǒng)計(jì)信息>
-- =============================================
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執(zhí)行存儲(chǔ)過(guò)程

執(zhí)行的結(jié)果

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

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); //定義一個(gè)數(shù)據(jù)庫(kù)操作指令
            MyCommand.CommandType = CommandType.StoredProcedure;//設(shè)置該語(yǔ)句是讀取存儲(chǔ)過(guò)程的
            SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定義一個(gè)數(shù)據(jù)適配器
            SelectAdapter.SelectCommand = MyCommand;//定義數(shù)據(jù)適配器的操作指令
            try  {
                myConnection.Open();//打開(kāi)數(shù)據(jù)庫(kù)連接
                SelectAdapter.SelectCommand.ExecuteNonQuery();//執(zhí)行數(shù)據(jù)庫(kù)查詢(xún)指令
                myConnection.Close();//關(guān)閉數(shù)據(jù)庫(kù)
            } catch (Exception e){
                throw new Exception(e.ToString());
            }
            DataSet MyDataSet = new DataSet();//定義一個(gè)數(shù)據(jù)集
            SelectAdapter.Fill(MyDataSet);//填充數(shù)據(jù)集
            DataTable dt = MyDataSet.Tables[0];//獲取查詢(xún)的結(jié)果表(因?yàn)橹挥幸粋€(gè))
            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("男生人數(shù):"+boyNumber);
            Console.WriteLine("女生人數(shù):" + girlNumber);
            Console.WriteLine("一班人數(shù):" + Class1Number);
            Console.WriteLine("二班人數(shù):" + Class2Number);
            Console.ReadKey();
        }

您的每一個(gè)喜歡,都是我創(chuàng)作的動(dòng)力


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,642評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評(píng)論 0 11
  • 什么是SQL數(shù)據(jù)庫(kù): SQL是Structured Query Language(結(jié)構(gòu)化查詢(xún)語(yǔ)言)的縮寫(xiě)。SQL是...
    西貝巴巴閱讀 1,995評(píng)論 0 10
  • 50個(gè)常用的sql語(yǔ)句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,334評(píng)論 0 7
  • 她需要靜下來(lái)。 她看了為數(shù)不多的書(shū),去網(wǎng)上尋找怎么寫(xiě)書(shū)評(píng),如何更好地閱讀的建議,她開(kāi)始重新翻開(kāi)那本書(shū),拿著筆,希望...
    當(dāng)當(dāng)當(dāng)七閱讀 385評(píng)論 0 1

友情鏈接更多精彩內(nèi)容