sql查询选择查询
① sql查询语句 以及筛选方法
你的表的月份不是数字型的,这个比较麻烦,如果是数字的话,一条语句就能实现。
给你个思路,你可以导出临时表,然后把月份更新成数字,那样就比较省事了。假设你导出的临时表中的月份已经更新成1、2、3...12的形式。
select a.月份,a.项目,
(select sum(预算金额) from (select 月份,项目,max(预算金额) as 预算金额 from 临时表 group by 月份,项目) b where 月份<=a.月份 and 项目=a.项目) as 预算总额,
(select sum(发生费用) from 临时表 where 月份<=a.月份 and 项目=a.项目) as 发生总额
from 临时表 a
group by a.月份,a.项目
这是一条语句列出各月、各项目的数据情况,如果需要指定月份和项目,则在where 中限定即可。
② SQL中“全部”的查询方法
说明:课程总数=学号选课总数,就可以说明该学号选了所有课程,同样,
(总课程数-1)=学号选课程总数,说明该学号少一种课程没有选,SQL如下:
每个学生的课程数:(select 学号,count(*)num_A from 选课 group by 学号),定义为A表
课程总数:(select count(*) num_B from 课程),将结果定义为B表。
整合SQ语句如下:
全选:
select a.* from (select 学号,count(*)num_A from 选课 group by 学号) A,
(select count(*) num_B from 课程)B WHERE A.num_A=b.num_B
选少一课程:
select a.* from (select 学号,count(*)num_A from 选课 group by 学号) A,
(select count(*) num_B from 课程)B WHERE A.num_A=b.num_B-1
选少2课程:
select a.* from (select 学号,count(*)num_A from 选课 group by 学号) A,
(select count(*) num_B from 课程)B WHERE A.num_A=b.num_B-2
。。。。。。。。。。。。。。。。。。。。
③ sql 选择符合条件的查询
"比如我要查询QQ中是4 那么QQ中所有存在4的但powint比4所在相关行的powint小的数据显示出来" 这个中文读起来都没明白,请准确描述;
④ SQL 选择性联合查询
创建表及插入数据
createtablea
(datevarchar(10),
namevarchar(1),
markint)
insertintoavalues('2014/12/1','A',5)
insertintoavalues('2014/12/1','B',2)
insertintoavalues('2014/12/1','C',5)
insertintoavalues('2014/12/2','A',4)
insertintoavalues('2014/12/2','B',6)
insertintoavalues('2014/12/2','C',6)
insertintoavalues('2014/12/3','A',9)
insertintoavalues('2014/12/3','B',8)
createtableb
(datevarchar(10),
qtyint)
insertintobvalues('2014/12/1',1111)
insertintobvalues('2014/12/2',5123)
insertintobvalues('2014/12/3',4532)
执行
selectt1.date,t1.name,t1.mark,t2.qty
from
(selecta.*,ROW_NUMBER()over(partitionbydateorderbyname)rnfroma)t1
leftjoin(selectb.*,1rnfromb)t2
ont1.date=t2.dateandt1.rn=t2.rn
结果截图
以上环境为sqlserver2008r2,你sqlserver2005以上版本或oracle10g以上版本应该都没问题
⑤ SQL 多条件,任意选择 查询方法
实例 public java.util.List<Operator> selectOperatorsConditions(
HashMap<String, String> conditions, Connection conn) {
// 根据条件进行查询操作员信息
java.util.List<Operator> operatorsByCondition = new ArrayList<Operator>(); StringBuffer sql = new StringBuffer(
"select operator_id,operator_name,is_admin from t_operator"); if (conditions.size() > 0) {
sql.append(" where ");
Iterator<String> keyset = conditions.keySet().iterator();
while (keyset.hasNext()) {
String cols = (String) keyset.next();
sql.append(cols + " = '" + conditions.get(cols) + "' and ");
}
sql.delete(sql.lastIndexOf("and"), sql.length());
}
Statement st = null;
ResultSet rs = null;
try {
if (conn != null) {
st = conn.createStatement();
rs = st.executeQuery(sql.toString()); while (rs.next()) {
Operator operator = new Operator(rs.getString(1), rs
.getString(2), rs.getString(3));
operatorsByCondition.add(operator);
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return operatorsByCondition;
}
⑥ sql语句按某一条件选择查询某表。
declare
varchartemp(10)
select@temp=zfromDB:Awhere...
if(@temp==1)
select*fromDB:Bwhere...
elseif(@temp==2)
select*fromDB:Cwhere...
elseif(@temp==3)
select*fromDB:Dwhere...
这个思路应该是这样的,你自己把代码补充完整,数据类型定好,希望能帮到你
⑦ 多选择筛选查询SQL语句怎么写
我做过类似的查询,就是用字典项表的数据id列,与数据表的字符串行做instr比较,比较时,两个数据分别在前后加',',防止第一个和最后一个字典项无法查找出来。
举个例子,数据表
字典表 dict
id name
12 wifi
13 冰箱
14 洗衣机
15 电视
业务表 query_table
id query_str
1 12,13,14,15
2 12,14
3 14,15
SELECT *
FROM dict a,query_table b
WHERE INSTR(CONCAT(CONCAT(',',b.query_str),','), CONCAT(',', CONCAT(a.id,',')))>-0 AND b.id=1
看实际效果
⑧ SQL 选择查询
select * from 表名 order by 入学时间(时间格式) asc
⑨ sql查询结果筛选
可以使用括号“(select查询子句)"套嵌一个查询结果。
语法格式:select columnlist... from (select子句) table_name where ...
注意:”)“ 后面需要给查询结果指定一个名称 table_name,名称不要与其他列名称相同,增加SQL语句的可读性。