怎么使用直接使用字段的符号
例如:
考核标准表:
考核项目 符号 标准 扣款
考核项目1 >= 15 10
考核项目2 > 10 5
考核项目3 <= 5 7
考核项目4 < 9 9岗位考核记录表:
生产岗位 考核项目1 考核项目2 考核项目3 考核项目4
一号机 16 8 5 10
二号机 14 13 6 7我要查询出每个岗位的扣款情况:
如下:
生产岗位 扣款
一号机 17
二号机 14求一个sql 不要case语句,要能直接使用字段符号的。
例如:
考核标准表:
考核项目 符号 标准 扣款
考核项目1 >= 15 10
考核项目2 > 10 5
考核项目3 <= 5 7
考核项目4 < 9 9岗位考核记录表:
生产岗位 考核项目1 考核项目2 考核项目3 考核项目4
一号机 16 8 5 10
二号机 14 13 6 7我要查询出每个岗位的扣款情况:
如下:
生产岗位 扣款
一号机 17
二号机 14求一个sql 不要case语句,要能直接使用字段符号的。
解决方案 »
- 急!sql的dateadd()如何控制时间
- 关于备份数据库中的部分数据,请给点思路。
- select * from a where a.id not in(select id from b where b.c>0)这条语句是对的吗?
- 如何查找多个字段相同的重复记录,并统计重复次数
- 資料很大的查詢 速度問題請教
- 一条sql更新语句
- 在Windows2003安装SQL2005 出现句柄无效,请教
- 删除过时的应用程序数据
- 看看这个存储过程,如何改才能运行?
- vc中调用ms sql server的本身存储过程时怎么取得返回值??
- SQL SERVER数据库安全设置的问题
- 使用jdbc连接 SQLServer 2005 Express的问题.
考核项目1 >= 标准时就扣款
对于一号机的考核项目1来说:
(16 >=(符号字段) 15)所以要扣10元
对于其他考核项目也是一样,扣款是累计的
1号机是考核项目1和考核项目3都要扣款的,所以是17(10+7)元
-- Author: happyflystone
-- Date : 2009-04-02 15:39:34
-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
--
-------------------------------------------------------------------------- Test Data: ta
IF OBJECT_ID('ta') IS NOT NULL
DROP TABLE ta
Go
CREATE TABLE ta(考核项目 NVARCHAR(5),符号 NVARCHAR(2),标准 INT,扣款 INT)
Go
INSERT INTO ta
SELECT '考核项目1','>=',15,10 UNION ALL
SELECT '考核项目2','>',10,5 UNION ALL
SELECT '考核项目3','<=',5,7 UNION ALL
SELECT '考核项目4','<',9,9
GO
-- Test Data: tb
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
Go
CREATE TABLE tb(生产岗位 NVARCHAR(3),考核项目1 INT,考核项目2 INT,考核项目3 INT,考核项目4 INT)
Go
INSERT INTO tb
SELECT '一号机',16,8,5,10 UNION ALL
SELECT '二号机',14,13,6,7
GO
--Start
declare @s varchar(1000)SELECT @s = isnull(@s+'+','')+'case when '+考核项目+ 符号 +ltrim( 标准) +' then '+ltrim(扣款)+' else 0 end'
FROM
TA
exec('select 生产岗位, '+@s+' from tb')
--Result:
/*
生产岗位
---- -----------
一号机 17
二号机 14
*/
--End