我有一个统计报表其中用到了如下的SQL语句,
SELECT TOP 1 (SELECT Count(*) AS 局级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='局级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 = :P1) AS 局级总数, (SELECT Count(*) AS 处级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='处级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 = :P1)
遇到的问题是:能否让P1一次接受多个值呢?个数不一定,或者有其他的什么办法?望大家给一点意见吧。
SELECT TOP 1 (SELECT Count(*) AS 局级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='局级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 = :P1) AS 局级总数, (SELECT Count(*) AS 处级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='处级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 = :P1)
遇到的问题是:能否让P1一次接受多个值呢?个数不一定,或者有其他的什么办法?望大家给一点意见吧。
Charindex是SQLSERVER中的一个包含函数,类似POS函数。
SELECT Count(*) AS 局级
FROM employee
WHERE (now()-出生年月)<(30*365) And 待遇级别='局级' And (人员分类='干管' Or 人员分类='工管') And 现工作单位 In ([:P1]);
如输入两个单位值如:INTEL,IBM。 如果单一输入能正确识别得到结果,而同时输入则是将它们看作一个单位。有没有其他什么方法?
假设有一个变量DWSTR:='(intel,ibm,sun)';完全可以这样写:
ADODateSet1.close;
ADODateSet1.CommandText:='SELECT TOP 1 (SELECT Count(*) AS 局级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='局级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 in '+dwstr+') AS 局级总数, (SELECT Count(*) AS 处级 FROM employee WHERE (now - 出生年月) < (30*365) And 待遇级别='处级' and (人员分类 = '干管' or 人员分类 = '工管') and 现工作单位 in '+dwstr+')'
ACCESS数据库
我在一个ADOQUERY中用到如下语句:
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * into table1 from employee where 现工作单位 in('+edit1.text+') ');
adoquery1.Open;
然而执行后抱错说:“当前程序不支持从单一执行返回多个记录集”.这个问题该如何解决呢?