随笔分类 - sql
摘要:-------------------------(情景描述)在我们处理数据时,可能会碰到这种情景:Id Name1 a,b2 a1 a,b,c对于上面的表数据要求合并同类项Name,得到结果:1 a,b,c2 a-------------------------(解决方案)我们通过sql for xml path来合并Name,并写一个标量函数来去掉重复项:1) 创建标量函数:CREATE FUNCTION F_getStr(@oriStr nvarchar(30))returns nvarchar(30)asbegin declare @str nvarchar(30),@t...
阅读全文
摘要:--创建数据库USE yujuCREATE database YuJuon primary( name='YuJu', filename='B:\ceshi数据库\YuJu.mdf', maxsize=1024mb, filegrowth=10%)log on( name='YuJu_log', filename='B:\ceshi数据库\YuJu.ldf', size=10mb, maxsize=1024mb, filegrowth=10mb)--DROP database YuJu--CREATE table Teacher(
阅读全文
摘要:USE [PM]GO/****** 对象: StoredProcedure [dbo].[LfangSatstics] 脚本日期: 08/24/2013 10:57:48 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:-- Create date: -- Description:-- =============================================ALTER PROCEDURE [dbo].[Lf
阅读全文
摘要:--第一步:根据系统编号、列、单价分组求和select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie into #TempSZCMXfrom #ShouZhiCunMingXi group by Lie, CLBH , DJ order by Lie,CLBH--第二步:列转行,分组求和insert into #TempLastResultsSELECT YJ,EJ, MoJi=(CASE WHEN grouping(YJ) = 1 THEN '0' WHEN grouping(EJ) = 1 THEN [YJ] when grouping(M
阅读全文
摘要:一级(2位),二级以后占用(3位),比如一级:01或02,二级:01001或01003,那三级编号就是01001001或01111112,我就写了一个存储过程【个人测试没问题,可以参考一下】获取即将要添加的编号(模拟场景:选择权限的树状图节点添加子集节点,需要计算出子集节点的将要插入的id)ALTER PROCEDURE [dbo].[GetMaxId]( @tablename nvarchar(100),--表名 @idcol nvarchar(100),--列名 @parent nvarchar(100),--父级编号 @jb int,--级别 @ids nvarchar(50) outp
阅读全文
摘要:EG: where Convert(varchar(100),[字段名],120) like '2010-10-10%'
阅读全文
摘要:第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关. 如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式. 例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该
阅读全文
摘要:个人认为:在实际项目开发中,表设计需要有适量的冗余,另外不建议遵循严格的关联关系(太死,不符合实际业务需求)。在建表设立自增ID时,要考虑表复制的问题(一般手动插入自增id也可以考虑唯一标示符)!
阅读全文
摘要:ALTER PROCEDURE dbo.dingpiaoinsert(@userId uniqueidentifier,@Str nvarchar(200),@movie_yingtingid int,@date datetime)ASbegin begin try DECLARE @Index int; DECLARE @Left nvarchar(50); WHILE CHARINDEX('|',@Str) > 0 BEGIN SELECT @Index = CHARINDEX('|',@Str); SELECT @Left = LEFT(@Str,@
阅读全文

浙公网安备 33010602011771号