group by

Continue Read..
select distinct E.SectionName,A.ItemKey,D.ItemName,D.ItemAbbr,D.ItemSpec,D.ItemUnit,A.DrugStoreKey,A.MaxAmount,
A.MinAmount,A.WarningAmount,a.CreatedLocalDtm from [ms_station].[ChestBaseItem] A inner join ms_item.Item D
on A.ItemKey=D.ItemKey left join [ms_core].[Section] E
on E.SectionKey=A.DrugStoreKey where A.ChestKey='" + chestkey + "'group by E.SectionName,A.ItemKey,D.ItemName,D.ItemAbbr,D.ItemSpec,D.ItemUnit,A.DrugStoreKey,A.MaxAmount,A.MinAmount,A.WarningAmount,a.CreatedLocalDtm order by A.CreatedLocalDtm

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

sql/c# 分页功能

Continue Read..
sql 分页存储过程及调用
点击查看原图
html:
<div class="lists-table">
                    <table cellpadding="0" cellspacing="0" border="0">
                        <thead>
                            <tr>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="name">
                                        <p>
                                            编码<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="name">
                                        <p>
                                            名称<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="ip">
                                        <p>
                                            查询码<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="ip">
                                        <p>
                                            描述<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="ip">
                                        <p>
                                            系统相关<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th class="tabSort-header">
                                    <a class="tabSort-header-inner" list="ip">
                                        <p>
                                            麻醉相关<span class="sort"></span></p>
                                    </a>
                                </th>
                                <th>
                                    <p class="last">
                                        操作</p>
                                </th>
                            </tr>
                        </thead>
                        <tbody id="safeOpr">
                            <asp:Repeater ID="RepeaterSection" runat="server">
                                <ItemTemplate>
                                    <tr SectionKey="<%#Eval("SectionKey") %>">
                                        <td><div class="tdof SectionCode" title='<%#Eval("SectionCode")%>'><%#Eval("SectionCode")%></div></td>
                                        <td><div class="tdof SectionName" title='<%#Eval("SectionName")%>'><%#Eval("SectionName")%></div></td>
                                        <td><div class="tdof SectionAbbr" title='<%#Eval("SectionAbbr")%>'><%#Eval("SectionAbbr")%></div></td>
                                        <td><div class="tdof DescText" title='<%#Eval("DescText")%>'><%#Eval("DescText")%></div></td>
                                        <td><span><%#Eval("IsSystemNeed").ToString() == "1" ? "<span class='green'>是</span>" : "<span class='red'>否</span>"%></span></td>
                                        <td><span><%#Eval("IsAnesNeed").ToString() == "1" ? "<span class='green'>是</span>" : "<span class='red'>否</span>"%></span></td>
                                        <td>
                                            <span class="caozuo" onclick="edit(this,'<%#Eval("SectionKey") %>')" style="cursor: pointer;"><img src="../images/edit.png" style="vertical-align:middle"></img>&nbsp;编辑&nbsp;</span><span class="caozuo" style="cursor:pointer;" onclick="deleteModel(this,'<%#Eval("SectionKey") %>')"><img src="../images/delete.png" style="vertical-align:middle"></img>&nbsp;删除</span>
                                        </td>
                                    </tr>
                                </ItemTemplate>
                                <FooterTemplate>
                                    
                                </FooterTemplate>
                            </asp:Repeater>
                        </tbody>
                        <%if (RepeaterSection.Items.Count == 0)
                                      {%>
                                    <tr>
                                        <td colspan="7" class="nodata">
                                            没有数据可供显示
                                        </td>
                                    </tr>
                                    <%} %>
                    </table>
                </div>
                    <webdiyer:AspNetPager ID="AspNetPager1" runat="server" CssClass="paginator" CurrentPageButtonClass="cpb"
                        EnableTheming="true" FirstPageText="首页" HorizontalAlign="right" LastPageText="尾页"
                        NextPageText="下一页" PageIndexBoxType="DropDownList" PageSize="15" PrevPageText="上一页"
                        ShowPageIndexBox="Always" TextBeforePageIndexBox="跳转到: " UrlPaging="false"
                        Width="100%" OnPageChanged="PageChanged">
                    </webdiyer:AspNetPager>


前端获取:
private void BindSections()
    {
        int pageCount;
        int RecordCount;
        string strwhere = " ";

        if (!string.IsNullOrEmpty(tbSectionCode.Text))
        {
            strwhere += " and (SectionCode like '%" + tbSectionCode.Text.Replace("'", "''").Trim() + "%' or (SectionName like '" + tbSectionCode.Text.Replace("'", "''").Trim() + "%' or dbo.func_getPY(SectionName) like '" + tbSectionCode.Text.Replace("'", "''").Trim() + "%') or SectionAbbr like '%" + tbSectionCode.Text.Replace("'", "''").Trim() + "%')";
        }
        if (cdlcxyf.Checked == true)
        {
            strwhere += "and IsDrugStore='1' ";
        }


        //获得药品列表
        DataSet ds = sectionMgr.GetSectionsList(this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageSize, out pageCount, out RecordCount, strwhere);
        DataTable dt = ds.Tables[0];
        this.AspNetPager1.RecordCount = RecordCount;

        if (dt != null && dt.Rows.Count > 0)
        {
            RepeaterSection.DataSource = dt.DefaultView;
        }
        RepeaterSection.DataBind();
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        this.AspNetPager1.CurrentPageIndex = 0;
        BindSections();
    }

    protected void PageChanged(object sender, EventArgs e)
    {
        BindSections();
    }


调用:
public DataSet GetSectionsList(int pageindex, int _pageSize, out int pageCount, out int RecordCount, string strwhere)
        {
            pageCount = 0;
            RecordCount = 0;
            SqlParameter[] para ={
                    new SqlParameter("@tblName",SqlDbType.VarChar,-1),
                    new SqlParameter("@fieldNameShow",SqlDbType.VarChar,-1),
                    new SqlParameter("@pageSize",SqlDbType.Int),
                    new SqlParameter("@pageCurrentIndex",SqlDbType.Int),
                    new SqlParameter("@fieldKey",SqlDbType.VarChar,-1),
                    new SqlParameter("@fieldOrder",SqlDbType.VarChar,-1),
                    new SqlParameter("@Order",SqlDbType.Bit),
                    new SqlParameter("@pageCount",SqlDbType.Int),
                    new SqlParameter("@Counts",SqlDbType.Int),
                    new SqlParameter("@fieldDistinct",SqlDbType.Bit),
                    new SqlParameter("@fieldWhere",SqlDbType.VarChar,-1)
                };

            para[0].Value = "[ms_core].[Section] ST";
            para[1].Value = @"ST.*,(select top 1 IsSystemNeed from [ms_core].[Section] ISN where ST.SectionKey=ISN.SectionKey ) as ISName,(select top 1 IsAnesNeed from [ms_core].[Section] IAN where ST.SectionKey=IAN.SectionKey ) as IAName";
            para[2].Value = _pageSize;
            para[3].Value = pageindex;
            para[4].Value = "SectionKey";
            para[5].Value = "SectionKey";
            para[6].Value = 1;
            para[7].Value = pageCount;
            para[7].Direction = ParameterDirection.Output;
            para[8].Value = RecordCount;
            para[8].Direction = ParameterDirection.Output;
            para[9].Value = 0;
            para[10].Value = strwhere;
            DataSet ds = new DataSet();
            ds = SqlHelper.ExecSqlDs(CommandType.StoredProcedure, "ProcDataPaging", para);
            RecordCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
            pageCount = Convert.ToInt32(ds.Tables[1].Rows[0][1]);
            return ds;

        }

存储过程:
USE [DIH_AMS_AnesNoteData]
GO

/****** Object:  StoredProcedure [dbo].[ProcDataPaging]    Script Date: 2013/11/14 9:04:21 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[ProcDataPaging]
(
@tblName  varchar(500),      ----要显示的表或多个表的连接
@fieldNameShow varchar(8000) = '*', ----要显示的字段列表
@pageSize  int = 1,                 ----每页显示的记录个数
@pageCurrentIndex int = 10,          ----要显示那一页的记录
@fieldKey varchar(150),      ----主表的主键
@fieldOrder  varchar(200) = null,  ----排序字段列表或条件
@Order bit = 0,                     ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')
@pageCount  int = 1 output,         ----查询结果分页后的总页数
@Counts  int = 1 output,            ----查询到的记录数
@fieldDistinct  bit = 0 ,          ----是否添加查询字段的 DISTINCT 默认0不添加/1添加
@fieldWhere varchar(2000) = null  ----查询条件,不需where,以And开始
--@strSql nvarchar(1000) = '' output  -----最后返回的SQL语句
)
AS
SET NOCOUNT ON
Declare @sqlTmp nvarchar(1000)      ----存放动态生成的SQL语句
Declare @strTmp nvarchar(4000)      ----存放取得查询结果总数的查询语句
Declare @strID     nvarchar(1000)   ----存放取得查询开头或结尾fieldKey的查询语句
Declare @strSortType nvarchar(10)   ----数据排序规则A
Declare @strFSortType nvarchar(10)  ----数据排序规则B
Declare @SqlSelect nvarchar(50)     ----对含有DISTINCT的查询进行SQL构造
Declare @SqlCounts nvarchar(50)     ----对含有DISTINCT的总数查询进行SQL构造
if @fieldDistinct  = 0
begin
    set @SqlSelect = 'select '
    set @SqlCounts = 'Count(*)'
end
else
begin
    set @SqlSelect = 'select distinct '
    set @SqlCounts = 'Count(DISTINCT '+@fieldKey+')'
end
if @Order=0
begin
    set @strFSortType=' ASC '
    set @strSortType=' DESC '
end
else
begin
    set @strFSortType=' DESC '
    set @strSortType=' ASC '
end
--------生成查询语句--------
--此处@strTmp为取得查询结果数量的语句
if @fieldWhere is null or @fieldWhere=''     --没有设置显示条件
begin
    set @sqlTmp =  @fieldNameShow + ' From ' + @tblName
    set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName
    set @strID = ' From ' + @tblName
end
else
begin
    set @sqlTmp = + @fieldNameShow + 'From ' + @tblName + ' where (1>0) ' + @fieldWhere
    set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName + ' where (1>0) ' + @fieldWhere
    set @strID = ' From ' + @tblName + ' where (1>0) ' + @fieldWhere
end
----取得查询结果总数量-----
exec sp_executesql @strTmp,N'@Counts int out ',@Counts out
declare @tmpCounts int
if @Counts = 0
    set @tmpCounts = 1
else
    set @tmpCounts = @Counts
    --取得分页总数
    set @pageCount=(@tmpCounts+@pageSize-1)/@pageSize
    /**//**当前页大于总页数 取最后一页**/
    if @pageCurrentIndex>@pageCount
        set @pageCurrentIndex=@pageCount
    --/*-----数据分页2分处理-------*/
    declare @pageIndex int --总数/页大小
    declare @lastcount int --总数%页大小 
    set @pageIndex = @tmpCounts/@pageSize
    set @lastcount = @tmpCounts%@pageSize
    if @lastcount > 0
        set @pageIndex = @pageIndex + 1
    else
        set @lastcount = @pagesize
    --//***显示分页
    if @fieldWhere is null or @fieldWhere=''     --没有设置显示条件
    begin
                     set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fieldNameShow+' from '+@tblName
                        +' where '+@fieldKey+' not in('+ @SqlSelect+' top '+ CAST(@pageSize*(@pageCurrentIndex-1) as Varchar(20)) +' '+ @fieldKey +' from '+@tblName
                        +' order by '+ @fieldOrder +' '+ @strFSortType+')'
                        +' order by '+ @fieldOrder +' '+ @strFSortType 
        
    end
    else --有查询条件
    begin
       
                set @strTmp=@SqlSelect+' top '+ CAST(@pageSize as VARCHAR(4))+' '+ @fieldNameShow +' from  '+@tblName
                    +' where '+@fieldKey+' not in('+ @SqlSelect+' top '+ CAST(@pageSize*(@pageCurrentIndex-1) as Varchar(20)) +' '+ @fieldKey +' from '+@tblName
                    +' Where (1>0) ' + @fieldWhere + ' order by '+ @fieldOrder +' '+ @strFSortType+')'
                    +' ' + @fieldWhere + ' order by '+ @fieldOrder +' '+ @strFSortType                 
          end
------返回查询结果-----
--set @strSql = @strTmp

--PRINT @strTmp
exec sp_executesql @strTmp

select @Counts,@pageCount



GO

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Sql 创建表

Continue Read..
if exists (select 1
            from  sysobjects
           where  id = object_id('ms_docs.PreoperativeVisit')
            and   type = 'U')
   drop table ms_docs.PreoperativeVisit
go

/*==============================================================*/
/* Table: PreoperativeVisit                                     */
/*==============================================================*/
create table ms_docs.PreoperativeVisit (
   PreoperativeVisitKey bigint               identity(1, 1),
   PatientOperationKey  bigint               null,
   Weight               nvarchar(20)         null,
   BriefHistory         nvarchar(500)        null,
   MedicalHistory       nvarchar(20)         null,
   DrugAllergyHistory   nvarchar(20)         null,
   OpeAnesHistory       nvarchar(20)         null,
   AnesFamilyHistory    nvarchar(20)         null,
   Obesity              int                  null,
   DrugDependenceHistory int                  null,
   PhysicalExamination  int                  null,
   CervicalActivity     nvarchar(20)         null,
   AirwayClassification nvarchar(20)         null,
   CoronaryHeartDisease int                  null,
   LungDisease          int                  null,
   LiverFunction        nvarchar(20)         null,
   RenalFunction        nvarchar(20)         null,
   AbnormalCondition    nvarchar(20)         null,
   VitalSignsInformation nvarchar(500)        null,
   SkinMucosaCase       nvarchar(20)         null,
   NasalCavityCase      nvarchar(20)         null,
   OralCase             nvarchar(20)         null,
   OralType             nvarchar(20)         null,
   MouthOpeningLevel    nvarchar(20)         null,
   MouthOpeningDifficulty nvarchar(20)         null,
   PharyngealCase       nvarchar(20)         null,
   TonsilHypertrophy    nvarchar(20)         null,
   PharyngealOther      nvarchar(20)         null,
   CirculatorySysCase   nvarchar(20)         null,
   CirculatorySysNoise  nvarchar(20)         null,
   PrecordialPain       int                  null,
   Tremble              int                  null,
   Varicosity           nvarchar(20)         null,
   ArterialShootingSound nvarchar(20)         null,
   HBPLevel             nvarchar(20)         null,
   CirculatorySysOther  nvarchar(20)         null,
   RespiratorySysCase   nvarchar(20)         null,
   BreathSounds         nvarchar(20)         null,
   BreathDifficult      nvarchar(20)         null,
   BreathDifficultLevel nvarchar(20)         null,
   BreathLevel          nvarchar(20)         null,
   TrachealSituation    nvarchar(20)         null,
   RespiratorySysOther  nvarchar(20)         null,
   EndocrineSysCase     nvarchar(20)         null,
   Diabetes             nvarchar(20)         null,
   PrimaryAldosteronism int                  null,
   ComplexCells         int                  null,
   Thyroid              nvarchar(20)         null,
   Paranephros          nvarchar(20)         null,
   EndocrineSysOther    nvarchar(20)         null,
   DigestiveSysCase     nvarchar(20)         null,
   Liver                nvarchar(20)         null,
   Spleen               nvarchar(20)         null,
   Regurgitation        nvarchar(20)         null,
   EsophagealVarix      int                  null,
   AbdominalMass        int                  null,
   Kidney               nvarchar(20)         null,
   KidneyTapsPain       nvarchar(20)         null,
   DigestiveSysOther    nvarchar(20)         null,
   MuscleSysCase        nvarchar(20)         null,
   MuscleSysOther       nvarchar(20)         null,
   SkeletonSysCase      nvarchar(20)         null,
   SkeletonSysOther     nvarchar(20)         null,
   AnginaScores         nvarchar(20)         null,
   AnginaClinicalFeature nvarchar(20)         null,
   HeartFunctionLevel   nvarchar(20)         null,
   BreathHoldingTest    nvarchar(20)         null,
   HeartFunctionClinicalFeature nvarchar(20)         null,
   Hypertension         int                  null,
   HypertensionLevel    nvarchar(20)         null,
   HypertensionHazards  nvarchar(20)         null,
   TargetOrganDamage    nvarchar(20)         null,
   HypertensionClinicalFeature nvarchar(20)         null,
   HypertensionHazardAssessment nvarchar(20)         null,
   Electrocardiogram    nvarchar(500)        null,
   ChestRadiography     nvarchar(500)        null,
   Other                nvarchar(500)        null,
   BloodRoutineExam     nvarchar(500)        null,
   IntubationDifficult  nvarchar(20)         null,
   ASA                  nvarchar(20)         null,
   AnesthesiaIndications nvarchar(20)         null,
   AnesthesiaTaboo      nvarchar(20)         null,
   AnesthesiaNote       nvarchar(20)         null,
   AnesthesiaOrder      nvarchar(20)         null,
   AnaesthesiaMethod    nvarchar(20)         null,
   SupportMeasures      nvarchar(20)         null,
   AnesthetistKey       int                  null,
   AnesthetistName      nvarchar(100)        null,
   VisitTime            datetime             null,
   State                int                  null,
   CreatedActorKey      int                  null,
   CreatedLocalDtm      datetime             null,
   LastModifiedActorKey int                  null,
   LastModifiedLocalDtm datetime             null default getutcdate(),
   LastModifiedBinaryValue timestamp            null,
   constraint pk_PreoperativeVisit primary key (PreoperativeVisitKey)
)
go

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

Sql 常用语句

Continue Read..

1.修改字段长度

alter table 表名 alter column 列名 类型(长度)

例子:

alter table [ms_docs].[PreoperativeVisit] alter column AnesthesiaMethod nvarchar(200)

2.查询数量

select count(*) from ms_station.CellContent where cellkey =123

3.带子查询

select b.cellkey,b.ChestKey from ms_station.Cell b where b.chestkey in( select top 1 a.chestkey from ms_station.Chest a where a.SectionKey=248 and a.chesttype=-1)

4.修改语句

update ms_station.CellContent set MaxAmount = 3,MinAmount = 3,LastModifiedActorKey =8 ,LastModifiedLocalDtm = 2013-11-12 where cellkey = 124 and itemkey = 22

5.查询(inner join)

select * from ms_cg.ChestRE A inner join ms_station.Chest B on A.MainChestKey = B.ChestKey where reno ='7854de' and chestkey='3'

6.插入语句

insert into ms_station.CellContent(CellKey,ItemKey,ChestKey,MaxAmount) values (2,34,3,22) ;select @@IDENTITY

7.删除语句

delete from  [ms_station].[ChestLocation] where ChestKey='33'

8.查询所有语句

select * FROM ms_station.Chest

 

 

 

 

 

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

sql之left join、right join、inner join、full join的区别

Continue Read..
外连接:
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
full join(外连接)返回两个表中的行 left join + right join

内连接:
inner join(等值连接) 只返回两个表中联结字段相等的行

交叉连接:
cross join(交叉连接):结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。


举例如下: 
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

--------------------------------------------
1.left join
sql语句如下: 
select * from A
left join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下: 
select * from A
right join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下: 
select * from A
innerjoin B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------

4.full join
sql语句如下: 
select * from A
full  join B 
on A.aID = B.bID

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115        NULL       NULL
NULL     NULL     8     2006032408

结果说明:
full join 关键字会从左表 (A) 和右表 (B) 那里返回所有的行。如果 "A" 中的行在表 "B" 中没有匹配,或者如果 "B" 中的行在表 "A" 中没有匹配,这些行同样会列出。
--------------------------------------------
注: 
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.