/*
lvl1 lvl2 lvl3 lvl4 lvl
4 3 4 1
3 2 2 1
2 2 3 4
4 4 3 4
3 1 2 2
怎么写代码 去比较lvl1、lvl2、lvl3、lvl4 对应每行的值,取其中最小的,将其值添加到lvl列里
运行结果应该是
lvl
1
1
2
3
1
*/
--方法(一) 函數法
-->Title:Generating test data
-->Author:wufeng4552
-->Date :2009-10-16 09:58:16
if not object_id('Tempdb..#t') is null
drop table #t
Go
Create table #t([lvl1] int,[lvl2] int,[lvl3] int,[lvl4] int,[lvl] int)
Insert #t
select 4,3,4,1,null union all
select 3,2,2,1,null union all
select 2,2,3,4,null union all
select 4,4,3,4,null union all
select 3,1,2,2,null
Go
if object_id('UF_minget')is not null drop function UF_minget
go
create function UF_minget
(@col1 int,@col2 int,@col3 int,@col4 int)
returns int
as
begin
declare @t table(col int)
insert @t select @col1 union all
select @col2 union all
select @col3 union all
select @col4
return(select min(col)from @t)
end
go
update t set [lvl]=dbo.UF_minget([lvl1],[lvl2],[lvl3],[lvl4])
from #t t
select * from #t
/*
lvl1 lvl2 lvl3 lvl4 lvl
----------- ----------- ----------- ----------- -----------
4 3 4 1 1
3 2 2 1 1
2 2 3 4 2
4 4 3 4 3
3 1 2 2 1
(5 個資料列受到影響)
*/
--方法二 MSSQL2005 XML PATH
-------------------------------------
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-10-16 09:57:38
-------------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (lvl1 int,lvl2 int,lvl3 int,lvl4 int,lvl int)
INSERT INTO @T
SELECT 4,3,4,1,null UNION ALL
SELECT 3,2,2,1,null UNION ALL
SELECT 2,2,3,4,null UNION ALL
SELECT 4,4,3,4,null UNION ALL
SELECT 3,1,2,2,null
--SQL查询如下:
UPDATE A SET
lvl = B.x.value('min(//row/*)','int')
FROM @T AS A
CROSS APPLY (SELECT x = (SELECT A.* FOR XML PATH('row'),TYPE)) AS B;
SELECT * FROM @T;
/*
lvl1 lvl2 lvl3 lvl4 lvl
----------- ----------- ----------- ----------- -----------
4 3 4 1 1
详细解决方案
MSSQL多列取最大也许最小值 -整理帖
热度:93 发布时间:2016-04-24 18:36:20.0
相关解决方案
- 怎么跟踪winform应用程序发送到数据库的sql(oracle、mssql)
- mssql 可以作桌面数据库吗
- 关于用.net 将Excel文件导入到数据库(MSSQL)的有关问题
- 寻.net、MsSQL、C#方面的老师解决思路
- 怎么在WIN2003+IIS 配置ASP+PHP+JSP,数据库:MSSQL+MYSQL
- mssql 如何样把某列的数据删除
- mssql 的查询语法有关问题
- ASP+ACESS(MSSQL)模式,还是php+mysql模式?解决办法
- PHP 连接MSSQL ,用UTF8提交到MSSQL,mssql 后台管理查询乱码有关问题
- php 连接 mssql 的一些有关问题,诚心求人解答
- php-5.3.3 连接 mssql 失败?解决思路
- php 读取 mssql 里的空值 怎么判断
- php连接mssql的有关问题 Warning: mssql_connect() [function.mssql-connect]
- MSSQL SERVER超时已经过期的有关问题
- mssql JDBC驱动哪里有下啊
- 要支持oracle mssql mysql db2等多个数据库,大家是如何维护脚本的啊
- MSSQL 地区排除查询有关问题
- MSSQL Profiler 追踪到的数据都是两条
- SSRS(MSSQL 2014)预览跟列印排版位移
- mssql 根据时间回计算总值
- MSSQL 表中千万数据更新需要10多分钟 请教如何优化
- MSSQL 2008 自增列乱跳,该如何解决
- mssql 怎么让 字段值 为 其他记录值的计算结果
- mssql 在update语句中怎么使用order by
- MSSQL 怎么将两个游标的结果集合并
- mssql 怎么设置登录用户只能查询修改表和执行存储过程的权限
- MSSQL 怎么用脚本查询服务器所有数据库在硬盘上存储的地址
- mssql 中 如其让表 接受两个数据集
- struct如何写入到数据库的varbinary 中,Sql语句如何构造?MSSQL
- windows 2003 MSSQL 2008R2 执行操作时忽然断电