SQL语句常用集锦

1.根据查询字段结果不同,显示不同字段

        SELECT d.ID AS deptId, d.NAME AS deptName, d.PARENT_ID AS parentId,d.PARENT_IDS AS parentIdsStr,
        pare.NAME deptParentName,p.PRESENT_POSITION presentPosition,
        COUNT(IF(p.PRESENT_POSITION = 1, 1, NULL)) AS headProducePersonNum,
        COUNT(IF(p.PRESENT_POSITION = 2, 1, NULL)) AS producePersonNum,
        COUNT(p.id) AS presentPersonNum
        FROM department d
        LEFT JOIN department pare ON d.PARENT_ID = pare.id
        LEFT JOIN person p ON d.id = p.dept_id AND p.IS_PRESENT = 1 AND  p.PRESENT_POSITION = 2
        GROUP BY d.id,p.PRESENT_POSITION
        HAVING presentPersonNum <![CDATA[ > ]]>  0
        ORDER BY presentPersonNum DESC, d.id ASC;
//字段值大小比较,显示不同结果
SELECT
	tr.PERSON_CODE,
	tr.PERSON_NAME,
	tr.SWING_TIME,
	tr.enterNum,
	tr.exitNum,
CASE WHEN tr.enterNum > tr.exitNum THEN '1' 
ELSE '0'  
END AS isPresent
FROM
	(
SELECT
	PERSON_CODE,
	PERSON_NAME,
	SWING_TIME,
	OPEN_RESULT,
	ENTER_OR_EXIT,
	COUNT( IF ( ENTER_OR_EXIT = 1, 1, NULL ) ) AS enterNum,
	COUNT( IF ( ENTER_OR_EXIT = 2, 1, NULL ) ) AS exitNum 
FROM
	acs_swing_card_record_202504 
WHERE
	PERSON_CODE IS NOT NULL 
	AND OPEN_RESULT = 1 
	AND DATE_FORMAT( SWING_TIME, '%Y-%m-%d' ) = '2025-04-09' 
GROUP BY
	PERSON_CODE 
	) tr

2. ifnull 函数的使用

  select
        ds.type storeType,
        dr.type rtm,
        ifnull( dga.code ,dr.code) agentCode,
        ifnull(dga.agent_name_cn ,dr.name_cn) agentName,
        dr.code resellerCode,
        dr.name_cn resellerName,
        ds.code code
        FROM dg_store ds
        LEFT JOIN dg_store_type dst ON dst.id = ds.type
        LEFT JOIN dg_reseller dr ON dr.code = ds.reseller_code
        LEFT JOIN dg_general_agent dga ON dga.id = dr.agent_id

3. sum 合并列结果计算


SELECT SUM(quantity + price) AS total_sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值