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語句的可讀性。