兄弟部门需要做半年业务总结, 需要研发部门提供一份详细的原始数据. 以便于他们进行业务分析. 记录一次数据导出的过程. (以前一直在做移动端开发, 现在开始慢慢接触数据库的工作.)
要导出的数据要求如下
流水号, 工单号, 工单总额,提单时间,状态, 审批时间, 会员姓名, 会员等级, 手机号码, 开卡时间. 会员卡号, 消费项目 , 消费车辆, 分店名 ,保险开始时间, 保险结束时间 , 车型, 购车时间, 客户地址,
sql 语句
SELECT r.SERIAL_NUMBER AS 流水号,
r.WORK_ORDER_NUMBER AS 工单号 ,
r.WORK_ORDER_MONEY AS 工单总额,
CONVERT(varchar(100), r.SUBMIT_DATE, 23) AS 提单时间,
r.STATE AS 状态,
CONVERT(varchar(100),r.OPERATE_DATE) AS 审批时间,
m.USER_NAME AS 姓名,
m.LEVEL AS 会员等级,
m.PHONE AS 手机号码,
CONVERT(varchar(100), m.CREATE_DATE, 23) AS 开卡时间,
m.CARD_NUMBER AS 会员卡号,
r.CONSUMED_ITEM AS 消费项目,
ci.LICENSE_PLATE AS 消费车辆,
company.COMPANY_NAME AS 分店名,
CONVERT(varchar(100), ci.IS_START_DATE, 23) AS 保险开始时间,
CONVERT(varchar(100), ci.IS_OVER_DATE, 23) AS 保险结束时间,
ci.CAR_MODEL AS 车型,
CONVERT(varchar(100), ci.BUY_DATE, 23) AS 购车时间,
customer.ADDRESS AS 客户地址
FROM
CM_MEMBER_CARD_CONSUME_RECORD r
INNER JOIN CM_MEMBER_CARD m ON r.MEMBER_CARD_ID = m.ID
LEFT JOIN CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION rcr ON rcr.CONSUME_RECORD_ID = r.ID
LEFT JOIN CM_CARINFO ci ON rcr.CAR_ID = ci.ID
LEFT JOIN CM_COMPANY company ON company.COMPANY_ID=m.COMPANY_ID
LEFT JOIN CM_CUSTOMER customer ON customer.CARD_ID=ci.CARD_ID
WHERE company.COMPANY_ID = 'gzjlqcmyyxgs00000006'
ORDER BY r.COMPANY_ID ,r.OPERATE_DATE desc
语句解读:
别名: AS 后面 可以跟别名 如: r.SERIAL_NUMBER AS 流水号
也可以省略 AS 如: r.SERIAL_NUMBER AS 流水号左链接: LEFT JOIN (ON) , 左边的表全部显示, 右边的表可能只显示一部分
右链接: RIGHT JOIN (ON),
内链接: INNER JOIN (ON),
WHERE : 条件筛选
ORDER BY: 排序方式, 默认是升序,
DESC
是逆序
条件语句自定义赋值:
case when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果4
end
- 多表链接时, ON 和 where 的区别.
ON 是创建临时表, where 是在临时表的基础上 进行条件筛选 这时候(左链接和右链接将失去作用)
下面是所有涉及到的表的详细介绍
CM_COMPANY 分店表
CM_MEMBER_CARD_CONSUME_RECORD 消费记录表
CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION 消费记录和车辆管理表
CM_MEMBER_CARD 会员卡表
CM_WORK_ORDER 工单表
CM_WORK_ORDER_TYPE 工单类型表
CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION 消费记录和优惠券关联表
CM_MEMBER_CARD_COUPON_RELATION 会员卡和优惠券关联表
MEMBER_CARD_COUPON_RELATION_ID 客户红包总额表
CM_MEMBER_CARD_COUPON 优惠券表
CM_CARINFO 车辆信息表
CM_CUSTOMER_RED_PACKET_AMOUNT 客户红包总额表
CM_CUSTOMER_COIN_AMOUNT 客户锦讯币总额表
CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_PACKAGE_RELATION 消费记录和赠送优惠券礼包关联表
CM_MEMBER_CARD_COUPON_PACKAGE 礼包表
CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION 礼包和优惠券关联表
CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_RELATION 消费记录和赠送优惠券关联表
CM_COMPANY 分店表 字段意思
COMPANY_ID 分店ID
COMPANY_NAME 分店名称
ADDRESS 地址
LONGI_LATI 经纬度
RESCUE_PHONE 救援电话
SECCAR_PHONE 二手车电话
INSURANCE_PHONE 保险电话
COMPLAINTS_PHONE 投诉电话
APPOINTMENT_PHONE 预约电话
ZDBS 总店标识,0-是,1-否
GZ_PHONE 故障电话
BRAND_IDS 可维修的品牌ID
SHOWSTATE
QUICK_CALL
ABBREVIATENAME
AREA_ID 所属地区
driverimg
I
消费记录表:CM_MEMBER_CARD_CONSUME_RECORD
ID id主键
SERIAL_NUMBER 流水号
WORK_ORDER_NUMBER 工单号
WORK_ORDER_MONEY 工单金额
APPOINTMENT_TYPE 预约类型 1: 否, 2:APP 预约, 3.电话预约
STATE 状态: 2:暂存,4:已提交,6:已消费,8:已驳回,10: 已返单
COMPANY_ID 分店 id
MEMBER_CARD_ID 会员卡 id
SUBMITTER 提交者
SUBMIT_DATE 提交日期
OPERATOR 操作人
OPERATE_DATE 操作日期
USED_MONEY
USED_CASH
PRESENTED_SCORE 获取积分
TOTAL_CONSUMED_MONEY 总钱数
CONSUMED_ITEM 消费项目
BALANCE_BEFORE_CONSUME 结账前
BALANCE_AFTER_CONSUME 结账后
REMARK 备注
COMMENT 说明
RED_PACKET_AMOUNT 红包金额
COIN_AMOUNT 锦讯币总金额
RETURN_CASH 现金返回
SUBMITTER_NAME 提交者姓名
SMS_CANCELED 取消短信
SMS_CANCELER 短信消除器
SMS_CANCELER_NAME 短信消除器的名字
SMS_CANCELED_DATE 短信取消日期
FAVORABLE_MONEY2
REMARK2 备注2
FAVORABLE_MONEY3
REMARK3
PRESENT_COINS 当前锦讯币
会员卡表:CM_MEMBER_CARD
ID
CUSTOMER_ID 顾客ID
PHONE 手机号
USER_NAME 姓名
CARD_NUMBER 卡号
CHIP_NUMBER 会员芯片卡号
COMPANY_ID 公司ID
CREATOR 创建人工号
CREATE_DATE 创建日期
LAST_MODIFIED 上次更新信息时间
BALANCE 账目
SCORE 积分
STATE 状态, 1: 正常 2: 已冻结 4: 已退卡
LEVEL 会员等级 0:普通卡 3: 银卡 6:金卡 9: 白金卡
REMARK 备注
OPENMOVECAR 挪车提醒
SOURCE ??? 取值:0, 2
REFUNDMONEY
OPERATORBACK
OPERATORBACKNAME
BACKREMARK 退卡备注
工单表:CM_WORK_ORDER
ID id
WORK_ORDER_NUMBER 工单号
CONSUME_RECORD_ID 消费记录id
COMPANY_ID COMPANY_ID
WORK_ORDER_DATE 工单时间
TYPE 类型
ORIGN_WORKING_HOURS_CHARGE 原工时费用
ACTUAL_WORKING_HOURS_CHARGE 折后工时费用
MATERIAL_CHARGE 材料费用
WORK_ORDER_AMOUNT 工单金额
COME_FROM 来源(1-R3同步,2-手动添加)
工单类型表: CM_WORK_ORDER_TYPE
CODE 代码
NAME 名字
COMPANY_ID COMPANY_ID
消费记录和车辆管理表 :CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION
CONSUME_RECORD_ID 消费记录 id
CAR_ID 汽车 id
消费记录和优惠券关联表 CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION
CONSUME_RECORD_ID 消费记录id
MEMBER_CARD_COUPON_RELATION_ID 会员卡优惠券关系id
USED_DATE 使用日期
ACTUAL_DEDUCTED_AMOUNT 实际扣除金额
会员卡和优惠券关联表 CM_MEMBER_CARD_COUPON_RELATION
ID 主键
MEMBER_CARD_ID 会员卡 id
COUPON_ID 优惠券id
EXPIRED_DATE 过期时间
USED_DATE 使用日期
CHECKED 检查: 1 或者空
COUPON_FROM 来自何方的卷
ISSUE_DATE 签发日期
客户红包总额表 : CM_CUSTOMER_RED_PACKET_AMOUNT
ID ID
CUSTOMER_NAME 客户名称
PHONE_NUMBER 预留电话
RED_PACKET_AMOUNT 红包总额
COMPANY_ID 分店ID
优惠券表 CM_MEMBER_CARD_COUPON
ID
COUPON_NAME 优惠券 名字
COMPANY_ID 优惠券 可用店铺
STATE 优惠券 当前状态 1: 正常, 2: 停止发放
TYPE 优惠券 种类 1:代金券, 2:精品卷 3: 工时卷 4: 服务卷 99:其他
COUPON_PRICE
COUPON_MONEY 优惠券 金额
DISPOSABLE 一次性?
CREATOR 操作人工号
CREATE_DATE 创建日期
LAST_MODIFIER 最后修改人 工号
LAST_MODIFIED 最近修改日期
REMARK 备注
礼包和优惠券关联表 CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION
COUPON_PACKAGE_ID 礼包id
COUPON_ID 优惠券id
QUANTITY 数量
车辆信息表 CM_CARINFO
ID 主键ID
CARD_ID 客户身份证号
CAR_ID 车辆ID
CAR_MODEL 车型
LICENSE_PLATE 车牌号
BUY_DATE 购车日期
IS_START_DATE 保险开始时间
IS_OVER_DATE 保险结束时间
LAST_REPARE_DATE 最后维修时间
FRAME_NUMBER 车架号
CREATE_TIME 创建日期
CHASSIS_NUMBER 底盘号
COMPANY_ID 分店ID
CCP 品牌
ENGINE_NUMBER 发动机号
LAST_KM 里程数
FPDATE 发牌日期
remind_day 提醒日
spacing_km
comefrom
model_str
brand_str
LAST_UPDATETIME 上次更新时间表
IS_DEL
客户红包总额表 MEMBER_CARD_COUPON_RELATION_ID
ID ID
CUSTOMER_NAME 客户名称
PHONE_NUMBER 预留电话
RED_PACKET_AMOUNT 红包总额
COMPANY_ID 分店ID
客户锦讯币总额表 CM_CUSTOMER_COIN_AMOUNT
ID 主键ID
PHONE_NUMBER 预留电话
COIN_AMOUNT 锦讯币总额
FROZEN_NUMBER 锦讯币冻结数额
消费记录和赠送优惠券礼包关联表 CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_PACKAGE_RELATION
CONSUME_RECORD_ID 消费记录id
COUPON_PACKAGE_ID 礼包id
礼包表: CM_MEMBER_CARD_COUPON_PACKAGE
ID 主键id
COUPON_PACKAGE_NAME 礼包名字
COMPANY_ID 分店 id
STATE 发送状态: 1: 正常的, 2: 已停止发放
MONTH_TO_LIVE 有效期(月)
EXPIRED_DATE 过期时间
CREATOR 创建者工号
CREATE_DATE 创建时间
TOTAL_MONEY 总金额
LAST_MODIFIER 最后修改人 工号
LAST_MODIFIED 最后修改时间
REMARK 备注
礼包和优惠券关联表 CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION
COUPON_PACKAGE_ID 礼包id
COUPON_ID 优惠券id
QUANTITY 数量
消费记录和赠送优惠券关联表 CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_RELATION
CONSUME_RECORD_ID 消费记录id
COUPON_ID 优惠券id
QUANTITY 数量
MONTH_TO_LIVE 有效期(月)
r = CM_MEMBER_CARD_CONSUME_RECORD 消费记录表
m = CM_MEMBER_CARD 会 员卡表
o = CM_WORK_ORDER 工单表
t = CM_WORK_ORDER_TYPE 工单了类型表.
rcr = CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION 消费记录和车辆关联表
cr = CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION 消费记录和优惠券关联表
cc = CM_MEMBER_CARD_COUPON 优惠券表
ci = CM_CARINFO 车辆信息表
ccrpa = CM_CUSTOMER_RED_PACKET_AMOUNT 客户红包总额表
ccc = CM_CUSTOMER_COIN_AMOUNT 客户锦讯币总额表
cp = CM_MEMBER_CARD_COUPON_PACKAGE 消费记录和赠送优惠券礼包关联表
cpcr = CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION 礼包和优惠券关联表
mccc = CM_MEMBER_CARD_COUPON 优惠券表
遇到的一些问题, 和解决方案:
-
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
做条件筛选时, 能用 WHERE 就不要用 AND , and 在只满足其中一个条件时 也会返回数据, 其中那个不满足的条件项 为 null.
sql 日期格式化