应该根据情况搜索整个表并在一行中提供数据 [英] Should search whole table and give data in one row according to the condition

查看:40
本文介绍了应该根据情况搜索整个表并在一行中提供数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表,值如下:


AC_NO  INV_NO   CC      FT
--------------------------------
1      A        PTN     INVOICE
1      A        PTN     BDE
2      B        ABC     INVOICE
2      B        PTN     INVOICE
2      B        PTN     BDE

SELECT
ac_no,
CASE  
WHEN FT like '%INVOICE%' THEN 'AVAILABLE' else 'NOTAVAILABLE'
END AS INVOICE ,
CASE  
WHEN FT like '%BDE%' THEN 'AVAILABLE' else 'NOTAVAILABLE'
END AS BDE
FROM Account_info where CC='PTN';


Output 
------------------------------------
1   A   Available      Notavailable
1   A   Notavailable   Available
2   B   Available      Notavailable
2   B   Notavailable   Available

但是我需要采用以下格式:

but I need them in the following format:


AC_NO   INVOICE       BDE
--------------------------------
1       AVAILABLE     AVAILABLE
2       AVAILABLE     AVAILABLE

推荐答案

COALESCENVL

SQL小提琴

查询1 :

  SELECT ac_no,
         COALESCE (MAX (CASE WHEN FT =  'INVOICE' THEN 'AVAILABLE' END),
                   'NOTAVAILABLE')
            AS INVOICE,
         COALESCE (MAX (CASE WHEN FT = 'BDE' THEN 'AVAILABLE' END),
                   'NOTAVAILABLE')
            AS BDE
    FROM Account_info
   WHERE CC = 'PTN'
GROUP BY ac_no

结果 :

Results:

| AC_NO |   INVOICE |       BDE |
|-------|-----------|-----------|
|     1 | AVAILABLE | AVAILABLE |
|     2 | AVAILABLE | AVAILABLE |

这篇关于应该根据情况搜索整个表并在一行中提供数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆