SQL-开发随笔一(数据报表)

原文详解:SQL-开发随笔一(数据报表)
原文链接: http://licocom.com/archives/1075
要做为一个后端开发人员,sql是必不可少需要熟悉掌握的语言。sql随便

1、AS:select 字段 as 别名,例:select name from userTable as 名字

2、UNION:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2

注意:
UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

3、时间格式化

时间格式化。date_format(t.time,’%y-%m’) 格式化为 年+月

4、向前推算6个日期

t.time >=date_add( now( ), interval - 6 month) 向前推算6个月时间,一般当查询条件使用

5、if语句

例:if(expr1,expr2,expr3),如果值等于expr1,则返回数值为expr2,否则返回expr3

select if(true=‘true’,1+1,1+2)

true=‘true’, 返回—>2

true=‘false’,返回—>3


-- 数据报表开发实例
SELECT
	t.*,
	t.enter + t.outs AS hap 
FROM
	(
	SELECT
		t.time,
		sum( IF ( t.type = 's', t.number, 0 ) ) AS enter,
		sum( IF ( t.type = 'f', t.number, 0 ) ) AS outs 
	FROM
		(-- 依照类型合并查询数据
		SELECT
			t.CODE,
			date_format( t.time, '%y-%m' ) AS time,
			t.type,
			t.number 
		FROM
			(-- 时间格式转换
			SELECT
				rvaud02 AS `code`,
				rva06 AS time,
				's' AS type,
				rvb07 AS number 
			FROM
				rva_file
				LEFT JOIN rvb_file ON rva01 = rvb01 UNION ALL
			SELECT
				ogaud03 AS `code`,
				oga02 AS time,
				'f' AS type,
				ogb12 AS number 
			FROM
				oga_file
				LEFT JOIN ogb_file ON oga01 = ogb01 
			) t -- 查出所有,出货量,收货量
			
		WHERE
			t.time >= date_add( now( ), INTERVAL - 6 MONTH ) 
		) t -- 向前推算6个月,一般当查询条件使用
		LEFT JOIN v_company v ON v.CODE = t.CODE 
	WHERE
		v.type = 'YQ' -- 依照公司编码查询条件
		
	GROUP BY
	t.time 
	) t -- 依照时间分组

面向开发需求,记录学习之路。

猜你喜欢

转载自blog.csdn.net/qq_42685333/article/details/87874206