在SQL里如何写条件逻辑?

主要涉及CASE,WHEN之类。。

不同的服务器上实现if...else...是不一样的。

建议用CASE ,WHEN,因为它们是SQL国标呢。

mysql> SELECT 
    -> SUM(CASE 
    -> WHEN EXTRACT(YEAR FROM open_date) = 2000 THEN 1
    -> ELSE 0
    -> END) year_2000,
    -> SUM(CASE
    -> WHEN EXTRACT(YEAR FROM open_date) = 2001 THEN 1
    -> ELSE 0
    -> END) year_2001
    -> FROM account
    -> WHERE open_date > '1999-12-31' AND open_date < '2006-01-01';
mysql> SELECT c.cust_id, c.fed_id, c.cust_type_cd,
    -> CASE
    -> WHEN EXISTS(SELECT 1 from account a
    -> WHERE a.cust_id = c.cust_id
    -> AND a.product_cd = 'CHK') THEN 'Y'
    -> ELSE 'N'
    -> END has_checking,
    -> CASE
    -> WHEN EXISTS(SELECT 1 FROM account a
    -> WHERE a.cust_id = c.cust_id
    -> AND a.product_cd = 'SAV') THEN 'Y'
    -> ELSE 'N'
    -> END has_savings
    -> FROM customer c;
mysql> SELECT c.cust_id, c.fed_id, c.cust_type_cd,
    -> CASE (SELECT COUNT(*) FROM account a
    -> WHERE a.cust_id = c.cust_id)
    -> WHEN 0 THEN 'None'
    -> WHEN 1 THEN '1'
    -> WHEN 2 THEN '2'
    -> ELSE '3+'
    -> END num_accounts
    -> FROM customer c;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值