sql工作总结--
--1. 组函数的使用
count sum max min 这些组函数的使用。。max(name) 保证唯一
--2.sql 大小判断
A > 'value' AND A < 'value' 不能写成 'value1' < A < 'value2'
--3. insert into
INSERT INTO (字段1,字段2,...) SELECT 字段值1,字段值2 ,... FROM table_name
要插入的字段值为查询到的值,一一对应,否则出现:没有足够值或者值过多。
--4. 函数trim的使用
Trim() 功能:删除字符串首部和尾部的空格。 语法:Trim ( string )
--各种 trim 函数的语法如下:
LTRIM(字串):将字串左边的空格移除。
RTRIM(字串): 将字串右边的空格移除。
TRIM(字串): 将字串开头和末尾的空格移除。
ALLTRIM(字串):将字串左右边两边的空格移除 --*
--5. 多表数据汇总的处理方法
从不同的表中取得的数据插入到一张临时表中(判断插入的东西是否会造成唯一键冲突) 不然不同表传入不同的键值
所有表所筛选出的所有数据插入到临时表中,目标表的数据从临时表取得。
--6. case when的使用
sum(case when date_id = '%s' then trans_cnt else 0 end)
THEN 后面只能做一次 不能 THEN 值1,值2
--①
CASE WHEN 条件 THEN 值 ELSE 值 ('0'或'null')
--②
CASE WHEN 条件 THEN 值 ELSE 值
WHEN 条件 THEN 值 ELSE 值
ELSE '0' OR 'null';
--7.季度函数
--季度
procedure crm_get_quarter(wrkdate varchar2,q_num out varchar2) IS -- (此处 'out varchar2' 类型可以更改)
-- VARCHAR2 => NUMBER to_number ('CHAR') 如:To_number(substr(wrkdate, 1, 4)); 否则造成不匹配的错误
mm_num varchar2(10);
yu_num varchar2(10);
begin
yu_num := substr(wrkdate,1,4);
mm_num := substr(wrkdate,5,2);
case
when mm_num in('01','02','03') then
if mm_num = '01' then
q_num := ''''||yu_num||'01'||'''';
elsif mm_num = '02' then
q_num := ''''||yu_num||'01'||''''||','||''''||yu_num||'02'||'''';
else
q_num := ''''||yu_num||'01'||''''||','||''''||yu_num||'02'||''''||','||''''||yu_num||'03'||'''';
end if;
when mm_num in('04','05','06') then
if mm_num = '04' then
q_num := ''''||yu_num||'04'||'''';
elsif mm_num = '05' then
q_num := ''''||yu_num||'04'||''''||','||''''||yu_num||'05'||'''';
else
q_num := ''''||yu_num||'04'||''''||','||''''||yu_num||'05'||''''||','||''''||yu_num||'06'||'''';
end if;
when mm_num in('07','08','09') then
if mm_num = '07' then
q_num := ''''||yu_num||'07'||'''';
elsif mm_num = '08' then
q_num := ''''||yu_num||'07'||''''||','||''''||yu_num||'08'||'''';
else
q_num := ''''||yu_num||'07'||''''||','||''''||yu_num||'08'||''''||','||''''||yu_num||'09'||'''';
end if;
when mm_num in('10','11','12') then
if mm_num = '10' then
q_num := ''''||yu_num||'10'||'''';
elsif mm_num = '11' then
q_num := ''''||yu_num||'10'||''''||','||''''||yu_num||'11'||'''';
else
q_num := ''''||yu_num||'10'||''''||','||''''||yu_num||'11'||''''||','||''''||yu_num||'12'||'''';
end if;
end case;
end;