SQL Sever特殊行转列

asd613613 2014-06-20 12:12:04
表结构如下:
FNumber FSeries  FItemID
M.QZ.AM.TL.00001   内牙  2010
B.QZ.AM.TL.00024   内牙 2010
B.QT.AM.TL.00022   内牙 2010
P.BJ.PL.00008  平螺母 2010
P.CY.QW.00001  球碗 2010
P.CY.QW.00002   球碗 2010
P.CY.SG.00054 内牙 2011
须要进行特殊行转列,如果如下:


内牙 球碗 平螺母 FItemID
M.QZ.AM.TL.00001 P.CY.QW.00001 P.BJ.PL.00008 2010
B.QZ.AM.TL.00024 P.CY.QW.00002 2010
B.QT.AM.TL.00022 2010
P.CY.SG.00054 2011
不知有何种方法可以实现
@DBA_Huangzj 昨天大神给出的方法试了试,自己无法把ID套进去,求解

...全文
805 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd613613 2014-06-20
  • 打赏
  • 举报
回复
引用 4 楼 chen357313771 的回复:
pivot max聚合的时候只取最大,给记录加个id,每个id,再max的时候就一条条max,不是一组一组的max了
不过我还有问题想麻烦下你,如果加上一个数量 FNumber FSeries  FItemID 数量 M.QZ.AM.TL.00001   内牙  2010 1 B.QZ.AM.TL.00024   内牙 2010 1 B.QT.AM.TL.00022   内牙 2010 1 P.BJ.PL.00008  平螺母 2010 1 P.CY.QW.00001  球碗 2010 1 P.CY.QW.00002   球碗 2010 1 P.CY.SG.00054 内牙 2011 2 显示效果如下:
内牙              数量    球碗             数量        平螺母        数量    FItemID
----------------  ----    ---------      -------  ----------------   ----    -------
B.QZ.AM.TL.00024    1     P.CY.QW.00002     1       P.BJ.PL.00008     1       2010
B.QT.AM.TL.00022    1     P.CY.QW.00001     1       NULL                      2010
M.QZ.AM.TL.00001    1     NULL                      NULL                      2010
P.CY.SG.00054       2     NULL                      NULL                      2011
我不知要怎么加?
asd613613 2014-06-20
  • 打赏
  • 举报
回复
引用 4 楼 chen357313771 的回复:
pivot max聚合的时候只取最大,给记录加个id,每个id,再max的时候就一条条max,不是一组一组的max了
太感谢你了,写代码还是思路最重要
chen357313771 2014-06-20
  • 打赏
  • 举报
回复
pivot max聚合的时候只取最大,给记录加个id,每个id,再max的时候就一条条max,不是一组一组的max了
asd613613 2014-06-20
  • 打赏
  • 举报
回复
引用 1 楼 chen357313771 的回复:
WITH test(FNumber,FSeries,FItemID)
AS
(
SELECT 'M.QZ.AM.TL.00001',N'内牙','2010' UNION ALL
SELECT 'B.QZ.AM.TL.00024',N'内牙','2010' UNION ALL
SELECT 'B.QT.AM.TL.00022',N'内牙','2010' UNION ALL
SELECT 'P.BJ.PL.00008',N'平螺母','2010' UNION ALL
SELECT 'P.CY.QW.00001',N'球碗','2010' UNION ALL
SELECT 'P.CY.QW.00002',N'球碗','2010' UNION ALL
SELECT 'P.CY.SG.00054',N'内牙','2011'
)
,test1 AS 
(
	SELECT ROW_NUMBER() OVER(PARTITION BY FSeries ORDER BY GETDATE()) AS ID
		,* 
	FROM test
)
--SELECT * FROM test1
SELECT [内牙],[球碗],[平螺母],FItemID
FROM test1 AS A
PIVOT (MAX(FNumber) FOR FSeries IN([内牙],[球碗],[平螺母]))p
可以帮我解释一下具体的思路不/?
asd613613 2014-06-20
  • 打赏
  • 举报
回复
非常感谢~你
chen357313771 2014-06-20
  • 打赏
  • 举报
回复
WITH test(FNumber,FSeries,FItemID)
AS
(
SELECT 'M.QZ.AM.TL.00001',N'内牙','2010' UNION ALL
SELECT 'B.QZ.AM.TL.00024',N'内牙','2010' UNION ALL
SELECT 'B.QT.AM.TL.00022',N'内牙','2010' UNION ALL
SELECT 'P.BJ.PL.00008',N'平螺母','2010' UNION ALL
SELECT 'P.CY.QW.00001',N'球碗','2010' UNION ALL
SELECT 'P.CY.QW.00002',N'球碗','2010' UNION ALL
SELECT 'P.CY.SG.00054',N'内牙','2011'
)
,test1 AS 
(
	SELECT ROW_NUMBER() OVER(PARTITION BY FSeries ORDER BY GETDATE()) AS ID
		,* 
	FROM test
)
--SELECT * FROM test1
SELECT [内牙],[球碗],[平螺母],FItemID
FROM test1 AS A
PIVOT (MAX(FNumber) FOR FSeries IN([内牙],[球碗],[平螺母]))p
sqlserver触发器例子 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。 Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。 Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三﹕Instead of 和 After触发器 SQL Server2000提供了两种触发器﹕Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同﹕ Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。 一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。 四﹕触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束﹐那幺After触发器不会执行﹐因为对约束的检查是在After触发器被激动之前发生的。所以After触发器不能超越约束。 Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立﹐其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行﹐所以它可以对约束进行一些预处理。 五﹕使用T-SQL语句来创建触发器 基本语句如下﹕ create trigger trigger_name on {table_name | view_name} {for | After | Instead of } [ insert, update,delete ] as sql_statement 六﹕相关示例﹕ 1﹕在Orders表中建立触发器﹐当向Orders表中插入一条订单记录时﹐检查goods表的货品状态status是否为1(正在整理)﹐是﹐则不能往Orders表加入该订单。 create trigger orderinsert on orders after insert as if (select status from goods,inserted where goods.name=inserted.goodsname)=1 begin print 'the goods is being processed' print 'the order cannot be committed' rollback transaction --回滚﹐避免加入 end 2﹕在Orders表建立一个插入触发器﹐在添加一条订单时﹐减少Goods表相应的货品记录中的库存。 create trigger orderinsert1 on orders after insert as update goods set storage=storage-inserted.quantity from goods,inserted where goods.name=inserted.goodsname 3﹕在Goods表建立删除触发器﹐实现Goods表和Orders表的级联删除。 create trigger goodsdelete on goods after delete as delete from orders where goodsname in (select name from deleted) 4﹕在Orders表建立一个更新触发器﹐监视Orders表的订单日期(OrderDate)列﹐使其不能手工修改. create tri
目录 绪论 2 开发背景 2 技术要求与设计方法 2 第一章 需求分析 3 第二章 总体设计 4 第三章 数据库设计 5 3.1概念结构设计 5 3.2 逻辑结构设计 6 第四章 详细设计 7 4.1 财务管理 7 4.2 餐桌管理 8 4.3 食品管理 9 4.4 优惠卡管理 11 第五章 编码测试 12 设计总结 16 学习体会 17 致谢 18 参考文献 19 绪论 开发背景 随着人民生活水平和生活方式的转变,餐饮业具有巨大的投资市场,被称为中国的 黄金产业,但同样也应看到,餐饮业不仅面临着巨大的发展机遇,也面临着前所未有的 挑战和考验。这些挑战主要来源于以下几方面:   1.人才的专业化程度不够导致内功不足:因餐饮业门坎较低,中国的大多数餐饮企 业的老板是从小店发展起来的,家族式管理的居多,还没有发展到聘请职业经理人,许 多还是"人治",并没有一套现代企业制度和监督管理体制,所以从观念意识、经营思想 和管理水平还有待专业化。 2.变能力差,缺乏先进的信息工具:现在的餐饮市场火爆,许多以前做电子、房地 产等其他行业的老板都凭借雄厚的资金实力挤进餐饮市场,争先恐后的上规模、上档次 、比菜品、比服务、拼价格,使餐饮市场竞争激烈,但是许多餐饮企业缺乏对市场的应 变能力和灵敏的信息工具,在现今网络经济的时代,许多餐饮企业还处在手工及半手工 状态。 因此,设计一个餐饮管理系统,就显得越来越重要了。 技术要求与设计方法 系统前台使用vc++ 6.0设计,通过目前较流行的ADO与数据库连接,后台使用功能强大的Microsoft Sql Sever 2000完成,对系统的安全性和灵活性都有很好的支持。本系统设计简单明了,该餐饮管 理系统能支持不同类型,不同权限的用户都有一定的操作权限,管理员有全部管理权限 ,比如:修改员工工资,增加菜单菜品,营业额查询分析。 整个管理系统采用统一的窗体风格,功能导航简介明了,方便用户进行操作;人性化 的界面设计,时用户感到一种操作的温馨;另外,数据库采用企业级的SQLServer2000做 后台支持,并进新安全备份,保证了餐饮管理系统的可靠性与维护性;管理员同时管理 员可以赋予用户一定的操作权限,方便管理 本系统只是一个简单的餐饮管理系统,涉及到的操作简单,但基本可以满足一个小型 餐饮企业的管理需要。 需求分析 建立餐饮管理系统,首先要对该系统进行必要的需求分析,经分析,该管理系统需包 括以下的信息: 日始日结:设定每个营业日的开始和结束 酒菜设置:按类别(酒水饮料、凉菜、热菜主食、包桌、服务用品等)设置酒菜数据 营业分析:对营业数据进行统计分析、打印报表 销售分析:营业总况、收入金额 点单查询:查询所有历史点单 操作员管理:管理操作员信息,并设置系统操作权限和最低折扣值 帐单查询:查询所有已结帐单 财务查询:查询各类单据和消费情况 工资管理:员工工资的查询、修改、录入 餐桌管理:餐桌类型及数量的删除、添加、修改 菜品管理:菜品名称、类别及售价的添加、删除、修改的管理 零售品管理:零售品名称、进价、及卖价的添加、修改、删除操作 优惠卡管理:优惠卡的发行及管理 第二章 总体设计 该餐饮管理系统的总的结构图如下: 图2.1 系统的总体结构图 该餐饮系统设计的目标就是将传统的纸质餐饮管理转变为电子系统管理,整个系统 需要完成的功能有前台营业、营业设置、财务查询、营业分析、系统管理。 前台营业:可以开台点菜、加菜、退菜换桌。 营业设置:包括酒菜设置和房台设置两部分。 财务查询:可以进行账单查询、挂账查询、订单查询。 营业分析:提供销售分析、房台分析、酒菜分析、业绩分析等功能。 系统管理:包括员工管理和挂账管理用户管理等操作。 第三章 数据库设计 3.1概念结构设计 经需求分析,可以知道餐饮管理系统的主要功能,并以此画出ER图。 整个ER图的所表述是这样的:一个顾客可以实现多次预定,但一次预定只能针 对一个顾客;一个预定可以有多个预定内容,但一个预定内容只能对应一个预定;一位 顾客某时只能在一个台位消费,每个台位有服务员;每位顾客每次消费形成一张费用单 ,一张费用单对应一个顾客(付账);付账通过收银员,有多种方式;对于特殊的结账 方式需要挂账人,而挂账对应挂账明细,管理员可以通过管账明细就行结账。同时,由 于系统支持预定,由收银员接受预定,形成订单,为订单预定台位。因此,餐饮管理系 统的ER图如下 图 3-1 餐饮管理系统总的E-R图 3.2 逻辑结构设计 数据库的建设具体来说就是建立系统的各种表,同时设置表的主键和外键。 现在需要将上面的数据库概念转化为SQL sever2000数据库系统支持的实际数据模型,也就是数据库的逻辑结构。 在逻辑结构设计阶段,通过把概念结构设计的ER图转换为关系模式,得到如下关系模
[小区物业管理系统] 数据库设计说明书 拟 制 人______________________ 审 核 人______________________ 批 准 人______________________ [2011年6月8日] 数据库设计说明书 1. 引言 1.1编写目的 目前在小区物业管理系统方面的管理已经比较健全,但是相当一部分规模较小的小区 管理还是通过手工操作,记录、管理工作效率很低,而且还存在着诸多弊端。不可避免 的人为因素造成数据的遗漏、误报、计算错误等,使得数据丢失率很高。同时在统计数 据、数据分析等方面还存在许多不足之处:操作耗时、耗力,不能够很好的满足管理者 的需求。而现今的计算机信息化管理有着储存量大、速度快等许多优点,而且处理信息 及时快捷,因此本小区物业管理系统利用计算机特殊性对管理过程形成一整套动态的存 储,这便可以提高了工作效率和效益。 1.2背景 随着行业的竞争愈来愈激烈,大家都意识到使用计算机信息技术的重要性,在小区物 业管理上普遍采用计算机管理手段。此次设计的系统主要供小区物业管理人员使用。由 于现在信息时代的到来,人们对计算机的认识和接触越来越广乏,所以只要经过简单的 演示和联系,很快就能够熟悉和使用此管理信息系统。 1.3项目情况 a.数据库名称:xqwygldb b.任务提出者:业主 1.4参考资料 【1】马晓梅;《SQL SEVER实验指导》;北京;清华大学出版社;2010.9 2. 外部设计 2.1支持软件 本数据库主要采用微软公司的成熟数据库系统SQL Server2005,提供了较为灵活操作简单的功能,可以为数据库管理员和系统开发人员提 供很好的支持。 3. 结构设计 3.1概念结构设计 在数据库设计中,先要对系统分析所得的数据字典中的数据存储进行分析,然后得出 系统的关系模式,可以采用实体——联系图(简称E——R图)的方法进行数据结构的描述。 E——R图由实体、属性、联系三部分组成。E——R图的有关符号说明如下: 各实体E-R图如下所示: 实体间主要联系如下: n n n 1 1 1 1 1 n 整体E-R图如下: 3.2逻辑结构设计 3.21将3.1中的E-R图转换为关系模型如下: 户主信息(住址,身份证号,户主姓名,性别,联系电话,年龄) 其他成员信息(编号,住址,成员姓名,与户主关系,成员身份证号,成员性别) 出入人员信息(编号,来访者姓名,来访者身份证号,来访者车牌号,被访问者住址, 被访问者姓名,进入时间,出去时间,进入小区大门号) 车辆信息(编号,车牌号,住址,车主姓名) 维修信息(编号,维修申请住址,维修申请户主姓名,维修人姓名,维修种类,维修开 始时间,维修结束时间,备注) 缴费信息(编号,缴费住址,缴费户主姓名,缴费名称,缴费日期,缴费额,备注) 3.22关系模式图如下: 3.3物理结构设计 数据在实际设计的过程中表现为相互关联的表,这些关联表反应了客观存在的一些事 物以及他们之间关联,本系统在数据库设计过程中主要设计到以下表,共七张: A. 户主信息表:它用于保存户主的有关信息,如户主名,户主身份证号等。 表名:HomeMaster "字段名称 "数据类型 "必填字段"字段大小 " 说明 " "Address " nvarchar " 是 "50 "户主具体住址" " " " " "(主键) " "HMIDCardNO "nvarchar "是 "50 "户主身份证号" "HMName "nvarchar "是 "10 "户主姓名 " "Sex "char "是 "2 "户主性别 " "HomePhoneNO "nvarchar "否 "50 "户主联系电话" "age "tinyint "否 " "户主年龄 " B.系统用户信息表:它用于保存使用设计器创建系统用户的有关信息。 表名:users "字段名称 " 数据类型 " 字段大小"必填字段 " 说明 " "Username " nvarchar "30 "是 "用户名(主键 " " " " " ") " "Password " nvarchar "30 " 是 " 密码 " "LastLogin " datetime " " 否 "登陆日期 " "Authorization "char "10 "是 "用户权限 " C.家庭其他成员信息表:它用于保存住户的其他成员的有关信息。 表名:OtherMembers "字段名称 "数据类型 "字段大小 "必填 "说明 " " " " "字段 " " "ONo "varchar " 30 "是 "编号(主键) " "Address "varchar " 50 "是 "所在户住址 " "OMName "Varchar " 10 "是 "成员姓名 " "Relat
很多关于asp的学习,很有帮助 基于ASP的学生信息管理系统的设计与实现 来源:中国论文下载中心 [ 08-11-24 09:11:00 ] 作者:admin 编辑:cw2112549 摘 要 由于学校规模进一步扩大,学生人数逐年上升,学生信息的管理也变得越来越复杂。为此,切实有效的把学生信息管理系统引入学校教务管理中,对于促进学校管理制度和提高学校教学质量有着显著意义。 本系统采用B/S结构,ASP为开发语言,SQL Server 2000为数据库来进行设计与开发。本论文,简要阐述了系统的开发背景与开发环境,对系统的构架进行分析,由此划分出各个模块,包括用户注册模块,用户登陆模块,个人管理模块,基本信息管理模块,特殊信息管理模块,毕业生信息管理模块,成绩管理模块,更多信息管理模块,退出系统模块。详细介绍了系统各个模块与功能的实现原理,最后总结开发阶段与测试阶段所遇到的问题与解决方法。 关键词:ASP;SQL Server 2000;B/S结构 1 引言 管理信息系统就是我们常说的MIS(Management Information System ),在强调管理,强调信息的现代社会中它变得越来越普及。MIS是一门新的科学,它跨越了若干个领域,比如管理科学、系统科学、运筹学、统计学以及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。 近年来Internet的飞速发展,Intranet技术得到了应用,为企业MIS提供了良好的支持环境。管理信息系统在企业的应用中存在三个要素,这就是人、计算机和数据。人是指企业领导者、管理人员、技术人员,以及MIS建设的领导机构和实施机构,他们必须有企业管理人员,尤其是企业领导的积极参与。计算机技术使MIS得以实施的主要技术。在这些技术中,软件开发是MIS开发的重点。第三个因素也不能忽视。企业的管理数据是MIS正常运行的基础。广义地说,各项管理控制是MIS的基础。是想要计算一台机床的成本,需要按时输入、每个零件以及每个螺钉螺母的费用,涉及企业的生产车间、采购、库房、 工艺设计和财务等多个部门,必须有一套管理制度作保证。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。目前,学校学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础。由于学校规模进一步扩大,学生人数逐年上升,学生情况的管理也变得越来越复杂。面对如此繁杂的任务。如果让个人去管理文档,就会显得费时费力。尤其在管理成绩时,任务更加繁重,就成绩管理本身来说,它是一项任务繁重、时效性较强的系统工作,它不但涉及学生个人成绩查询,更涉及到各教师的工作效率和质量。近年来随着计算机的迅速发展,计算机已经在社会各个领域显示了它巨大的作用。毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。 现在我国的一些院校中的信息管理效率还不是很高,这样已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。所以,学生信息系统的设计与开发也是一个时代必经的阶段。本次设计主要采用B/S结构,主要实用于各高校的各专业,从学生入学到毕业每个人在校的信息,以及成绩的管理。本系统主要有六大模块,基本信息管理、特殊信息管理、毕业生信息管理、更多信息管理(补助信息管理、勤工助学信息管理、奖励信息管理、处罚信息管理、异动情况信息管理)、成绩管理、个人管理。用WindonwsXP为操作平台,ASP作为脚本语言,采用SQL Sever 2000作为数据库,用户可以实现对数据的录入,修改,删除等操作。 2 系统开发背景 随着科学技术的不断提高,目前,学校学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础。由于学校规模进一步扩大,学生人数逐年上升,学生情况的管理也变得越来越复杂。面对如此繁杂的任务。如果让个人去管理文档,就会显得费时费力。近年来随着计算机的迅速发展,计算机已经在社会各个领域显示了它巨大的作用。毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。由于上述原因,所以,学生管理系统的开发也是时代的一个必经阶段。本次设计主要采用B/S结构,从学生入学到毕业每个人在校的信息,以及成绩的管理。本系统主要分为六大模块,基本信息管理、特殊信息管理、毕业生信息管理、更多信息管理(补助信息管理、勤工助学信息管理、奖励信息管理、处罚信息管理、异动情况信息管理)、成绩管理、个人管理。用户可以对各种信息进行录入,修改,删除等操作

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧