sql語句相減
㈠ sql server語句怎麼實現兩個字元型相減
相減只有數字類型或日期類型可以操作,如果兩個字元型欄位存儲的是數字或者日期格式的內容,可對兩個欄位進行轉換,然後再作相減操作;
如:兩個字元型(數字)的欄位
ID1 ID2
1 2
2 4
執行語句:
selectcast(ID2asint)-cast(ID1asint)fromtablename;
如:兩個字元型(日期)的欄位
DATE1 DATE2
2015-08-01 2015-09-01
2015-07-01 2015-10-01
執行語句:
selectcast(DATE2asdatetime)-cast(DATE1asdatetime)fromtablename;
㈡ 請教一個SQL語句的問題,如何進行兩行數據對應相減
資料庫對數據是按行為單位,對列進行查詢、運算等等操作進行投影的。
如果你想對同張表的兩行數據對應相減,你應該讓表自連接,連接條件就是你說的對應關系,然後連接後就變成一行,數值變為兩列,就可以運算了
示例:
select a.cnt-b.cnt
from my_table a,my_table b
where 對應關系;
㈢ SQL問題,兩欄位相減問題
SELECT ISNULL(A欄位,0)-ISNULL(B欄位,0) FROM 表
㈣ sql語句求兩條數據之間的差
sql中查詢兩個值之間的差直接用「-」(即減號)即可。
工具:SqlServer 2008 R2
步驟:
1、分別計算10-1,20.5-10.3,1-3,9-9(即分別計算整數中大數減小數、小數之間的相減,整數中小數減大數、整數減自己本身)
2、語句分別如下:
10-1
1select10-1㈤ SQL語句,同一個表中,兩個欄位相減,應該怎麼寫
在oracle中加減乘除都是可以直接select的。
select 1+2 from al;
select 1-2 from al;
select 欄位一,MAX(欄位二)-MIN(欄位二) from 表
where 欄位一=1
group 欄位一
註:
1、欄位二必須是數值型的,或數據都可轉換為數值
2、where條件根據需要加
(5)sql語句相減擴展閱讀:
1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。
2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。
3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。
㈥ 請教兩個日期欄位,相減得到分的sql語句怎麼寫
DATEDIFF ( datepart , startdate , enddate )
datepart 時間單位
這個是小時差 datediff(hour,開始時間,結束時間)
根據題主:
如果要得到小數,
SELECT CAST(DATEDIFF(MINUTE,'2016-01-01 12:10','2016-01-04 14:40 ')AS DECIMAL)/60
由於 datediff得到的都是int,所以要轉一下
㈦ 怎麼編寫加減法運算的sql語句
直接通過「+」、「-」符號運算即可;
sql1:select 11 -5 from al;結果就是 6;
sql2:select 11+5 from al;結果就是11;
sql3:select sysdate -sysdate from al;結果就是 0(時間類型);
解釋:能進行加減運行的必須是數值類型number,或者是時間類型。字元串類型無法進行加減。
拓展資料:
SQL語言,是結構化查詢語言(StructuredQueryLanguage)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。
SQL語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的結構化查詢語言作為數據輸入與管理的介面。
SQL語言語句可以嵌套,這使他具有極大的靈活性和強大的功能。
㈧ sql語句2個欄位相減
select (case when a>b then a-b else b-a end) from info
更新那個欄位
update info
set [欄位]=(case when a>b then a-b else b-a end)
㈨ 在SQL中 兩個表的數據怎麼相減
說清楚一點:是兩個視圖中的元組相減還是兩個視圖中連接後的數據結果相減?
一個關系減一個關系可以用謂詞NOT
IN或條件
<>
ANY進行關系操作運算。
兩個關系中的數據相減可以連接後(相所要求的條件,比如是同一個人的工資和扣的養老金之類,連接條件就是同一個人的標識,可能是身份證號,職工號什麼的)相減,這沒有什麼啊,兩表連接後進行數據操作就可以了!句中一般和一個表中數據的加減沒有區別:
select
A.gongzi-B.yanglao
as
Result,*
form
A,B
where
A.gonghao
=
B.gonghao
㈩ sql語句怎麼來對日期進行相加減
在sql server里可以使用:
where start_date <=
DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))
and completion_date >=
to_date('2005-12-09', 'yyyy-mm-dd') ;
oracle中沒有定義和sql server中一樣的DateAdd函數,
oracle可以通過interval 'n' year/month/day/hour/minute/second/second(p,s)
的方式來增減時間
下面是自己在oracle中寫的DateAdd函數
函數調用基本同sql server一樣, 不過datepart部分需要以字元串的方式輸入, 即
DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))
要改為
DateAdd('d',1,to_date('2005-12-09','yyyy-mm-dd'))
函數定義如下函數中的注釋是datepart的新說明, 與sql server中的略有不同)
create or replace function DATEADD( datepart varchar2, num number, indate date ) return date is
Result date;
v_sql varchar2(1000);
v_datepart varchar2(30);
v_ms varchar2(13);
begin
v_datepart := lower(datepart);
/*
Datepart Abbreviations
year yy, y
quarter qq, q
month mm, m
day dd, d
week wk, w
hour hh, h
minute mi, n
second ss, s
millisecond ms
*/
case
when v_datepart in ('year','yy','y') then
v_sql := 'select :1 + interval '''||num||''' year from al';
when v_datepart in ('quarter','qq','q') then
v_sql := 'select :1 + (interval ''3'' month) * '||num||' from al';
when v_datepart in ('month','mm','m') then
v_sql := 'select :1 + interval '''||num||''' month from al';
when v_datepart in ('week','wk','w') then
v_sql := 'select :1 + (interval ''7'' day) * '||num||' from al';
when v_datepart in ('day','dd','d') then
v_sql := 'select :1 + interval '''||num||''' day from al';
when v_datepart in ('hour','hh') then
v_sql := 'select :1 + interval '''||num||''' hour from al';
when v_datepart in ('minute','mi','n') then
v_sql := 'select :1 + interval '''||num||''' minute from al';
when v_datepart in ('second','ss','s') then
v_sql := 'select :1 + interval '''||num||''' second from al';
when v_datepart in ('millisecond','ms') then
v_ms := to_char(num/1000,'fm999999990.000');
v_sql := 'select :1 + interval '''||v_ms||''' second(9,3) from al';
else
RAISE_APPLICATION_ERROR(-20001, ''''||datepart||''' is not a recognized dateadd option.' );
end case;
execute immediate v_sql into Result using indate;
return(Result);
EXCEPTION
WHEN OTHERS THEN
RAISE ;
end DATEADD;