字符串列取值相加减更新到新列(XML)
来源:互联网 发布:unity3d 特效插件 编辑:程序博客网 时间:2024/06/17 19:37
现在有表
scores1 xt1 scores2 xt2 scores xt
10 2,3,2,3 12 2,6,2,2
5.5 1,2,1,1.5 10 2,3,2,3
求这样结果
scores1 xt1 scores2 xt2 scores xt
10 2,3,2,3 12 2,6,2,2 11 2,4.5,2,2.5
5.5 1,2,1,1.5 10 2,3,2,3 7.75 1.5,2.5,1.5,2.25
说明
xt=(xt1[1]+xt2[1])/2+(xt1[2]+xt2[2])/2+(xt1[3]+xt2[3])/2+(xt1[4]+xt2[4])/2
scores=xt[1]+xt[2]+xt[3]+xt[4]
注意: xt1和xt2中均为,隔开的字串,也可以看做一个数组,这个是不定长的,上面的是4个值,也可能是3个值。
求两个xt各个对应值的平均值和相加后的总和
原贴:http://topic.csdn.net/u/20100404/11/04368ae6-e985-45ee-bed1-4e962c5ed74b.html?84949
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-04 12:24:57
-- Version:Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
-- Mar 29 2009 10:27:29
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
--------------------------------------------------------------------------
--> 生成测试数据表:tb
IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([scores1] DECIMAL(18,1),[xt1] NVARCHAR(10),[scores2] DECIMAL(18,1),[xt2] NVARCHAR(10),[scores] NVARCHAR(20),[xt] NVARCHAR(20))
INSERT [tb]
SELECT 10,'2,3,2,3',12,'2,6,2,2',NULL,NULL UNION ALL
SELECT 5.5,'1,2,1,1.5',10,'2,3,2,3',NULL,NULL
GO
-->SQL查询如下:
--代码作者:happyflystone 修改并格式化:Tony
UPDATE TB SET
SCORES = CAST((SCORES1+SCORES2)/2 AS FLOAT),
XT = STUFF(
(
SELECT ','+LTRIM(CAST((COLA + COLB)/2.00 AS FLOAT)) AS [data()]
FROM (
SELECT CAST('<R>'+REPLACE('<R1>'+XT1+'</R1>',',','</R1><R1>') +
REPLACE('<R2>'+XT2+'</R2>',',','</R2><R2>')+'</R>' AS XML) AS T
--T为字段名
) AS A
CROSS APPLY (
SELECT COLA =T.X.value('.','NUMERIC(10,2)'),
IDX= ROW_NUMBER() OVER(ORDER BY GETDATE())
FROM A.T.nodes('//R/R1') AS T(X)
) AS B
CROSS APPLY (
SELECT COLB =T.X.value('.','NUMERIC(10,2)'),
IDX= ROW_NUMBER() OVER(ORDER BY GETDATE())
FROM A.T.nodes('//R/R2') AS T(X)
) C
WHERE B.IDX = C.IDX
FOR XML PATH('')),1,1,'')
SELECT * FROM TB
/*
scores1 xt1 scores2 xt2 scores xt
------- --------- ------- --------- -------- -----------------
10.0 2,3,2,3 12.0 2,6,2,2 11 2 ,4.5 ,2 ,2.5
5.5 1,2,1,1.5 10.0 2,3,2,3 7.75 1.5 ,2.5 ,1.5 ,2.25
(2 行受影响)
*/
- 字符串列取值相加减更新到新列(XML)
- oracle 字符串列转行
- TomKyte的字符串列转行
- MySQL字符串列类型区分
- 字符串列整数的转换
- 大数取余、大数比较、大数相加(更新中)
- Hibernate不支持常量字符串列的查询 问号
- 根据相同ID,对字符串列进行聚合【mysql,mssql】
- xml取值
- 大数相加/减/乘/除/取余 模板
- hdu1013-字符相加
- 实现像sum对整数一样,字符串按某列group by来组合字符串列
- oracle 逗号分隔的字符串列字段查询列出多条记录
- 由中序与先序字符串列获取二叉树
- js 中 字符相加 or 数字相加
- JS中数字和字符相加相减问题
- C++中字符串字面值和字符相加
- C++中字符串字面值和字符相加
- Tomcat性能调优
- 堆(heap)和栈(stack)
- 无语的社会
- wcsstr()的实现
- 坐标系统及其变换
- 字符串列取值相加减更新到新列(XML)
- 联合(union)
- 投影变换
- 破解高手
- 三维图元的输出
- EXTJS 基本使用
- Myeclipse改端口号!端口号8080,被占用了
- 复杂的对话框
- 条款16:成对使用new和delete时形式应该相同