SQL如何基于另一列中的值在一行中多次选择列

罪犯外套

我需要根据以下四个表创建报告:

Table A: Columns(record_id, contact_id, role_id)

Table B: Columns(contact_id, fname, lname)

Table C: Columns(role_id,role_description)

Table D: Columns(Record_id, date)

询问:

select d.record_id,d.date,b.fname,b.lname,c.role_description
from a,b,c,d
where a.contact_id = b.contact_id and
      a.role_id = c.role_id and
      a.role_id in('legal','finance') and
      a.record_id = d.record_id

该查询将产生多行,如下所示:

Record ID | Date   | Fname | Lname | Role | 
=============================================
1         |Jan 2   | Bob   | Smith | Legal |
----------------------------------------------
1         |Jan 2   | Jim   | Jones | Finance |  
----------------------------------------------

我需要生产的是这样的:

-----------------------------------------------------------------------------
record ID | Date  | Legal User | Finance User |       
--------------------------------------------------------------------
1         | Jan 2 |Bob Smith   | Jim Jones   |

我了解联接和串联,但是无法弄清楚如何根据角色将2个用户排成一行。

马特
SELECT *
FROM
    (
       select d.record_id,d.date
          ,b.fname + b.lname AS name
          ,c.role_description + ' User' as role_description
       from a,b,c,d
       where a.contact_id = b.contact_id and
            a.role_id = c.role_id and
            a.role_id in('legal','finance') and
            a.record_id = d.record_id
    ) q
    PIVOT 
    (
       MAX(name)
       FOR role_description IN ([Legal User], [Finance User])
    )

您应该可以使用PIVOT。我知道这看起来很奇怪,因为您使用的是varchar的MAX(),但是这样做确实可行。

根据您对未简化的特定语法的评论,我可以这样做:

SELECT *
FROM
    (
       select
          d.ctx_id
          ,effective_date,
          b.first_name + b.last_name AS name
          ,c.description
       from
          ctx_contract_contacts a
          INNER JOIN ctx_contacts b
          ON a.contact_id = b.contact_id
          INNER JOIN code_lookup c
          ON a.association = c.lookup_code 
          INNER JOIN ctx_basic_info d 
          ON a.ctx_id = d.ctx_id
       where
          and a.association in(117601,117759)
    ) q 

    PIVOT
    (
       MAX(name) 
       FOR description IN ([Legal Reviewer], [NDA reviewer])
    ) p

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建基于同一行中另一列的值命名的新列?

来自分类Dev

如何检查一列的值是否在另一行的另一列中

来自分类Dev

R-如何基于同一行另一列的值从列中获取值

来自分类Dev

如何基于dplyr管道中另一列的第一行的值重命名列

来自分类Dev

在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

来自分类Dev

在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

来自分类Dev

如何为另一列中的每一行重复所有列值

来自分类Dev

如果同一行的另一列等于某值,如何计算一列中的值?

来自分类Dev

如何使用一列查找行并在另一列中返回同一行的值

来自分类Dev

如果一列值相等而另一列不相等,则忽略 SQL 中的一行

来自分类Dev

如何基于每一行的另一列的值将值插入到一列?

来自分类Dev

如何基于sql中另一列的值连接日期和时间列?

来自分类Dev

SQL Server:如何选择表中的行,其中列的值相同,而另一列的值完全相同

来自分类Dev

如何基于R中的列值将值从一行复制到另一行?

来自分类Dev

将一行中的列值求和并保存到另一列中

来自分类Dev

将一行中的列值求和并保存到另一列中

来自分类Dev

如何根据同一行另一列中的值来向前填充列值

来自分类Dev

根据Pyspark中另一列的值,有条件地从同一列的另一行值替换一行中的值?

来自分类Dev

SQL选择在另一列中具有至少一个特定值的所有非唯一行

来自分类Dev

Pyspark:将一列中的值与另一列中同一行中的列表进行匹配

来自分类Dev

SQL:如何根据SQL中另一列中的值范围对一列求和?

来自分类Dev

SQL中某一行列等于另一行的另一列的次数

来自分类Dev

SQL中某一行列等于另一行的另一列的次数

来自分类Dev

SQL:如果满足条件,则将值从列复制到同一列中的另一行

来自分类Dev

如何基于另一个列的值在SQL选择查询中创建/添加列?

来自分类Dev

根据另一列中另一行的值计算总和

来自分类Dev

PostgreSQL根据一列的值触发,以更改或更新每一行中另一列的值。

来自分类Dev

如果同一行中另一列中的值匹配,如何比较一列的两个值

来自分类Dev

如何基于另一列中的值将值移到新列中

Related 相关文章

  1. 1

    如何创建基于同一行中另一列的值命名的新列?

  2. 2

    如何检查一列的值是否在另一行的另一列中

  3. 3

    R-如何基于同一行另一列的值从列中获取值

  4. 4

    如何基于dplyr管道中另一列的第一行的值重命名列

  5. 5

    在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

  6. 6

    在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

  7. 7

    如何为另一列中的每一行重复所有列值

  8. 8

    如果同一行的另一列等于某值,如何计算一列中的值?

  9. 9

    如何使用一列查找行并在另一列中返回同一行的值

  10. 10

    如果一列值相等而另一列不相等,则忽略 SQL 中的一行

  11. 11

    如何基于每一行的另一列的值将值插入到一列?

  12. 12

    如何基于sql中另一列的值连接日期和时间列?

  13. 13

    SQL Server:如何选择表中的行,其中列的值相同,而另一列的值完全相同

  14. 14

    如何基于R中的列值将值从一行复制到另一行?

  15. 15

    将一行中的列值求和并保存到另一列中

  16. 16

    将一行中的列值求和并保存到另一列中

  17. 17

    如何根据同一行另一列中的值来向前填充列值

  18. 18

    根据Pyspark中另一列的值,有条件地从同一列的另一行值替换一行中的值?

  19. 19

    SQL选择在另一列中具有至少一个特定值的所有非唯一行

  20. 20

    Pyspark:将一列中的值与另一列中同一行中的列表进行匹配

  21. 21

    SQL:如何根据SQL中另一列中的值范围对一列求和?

  22. 22

    SQL中某一行列等于另一行的另一列的次数

  23. 23

    SQL中某一行列等于另一行的另一列的次数

  24. 24

    SQL:如果满足条件,则将值从列复制到同一列中的另一行

  25. 25

    如何基于另一个列的值在SQL选择查询中创建/添加列?

  26. 26

    根据另一列中另一行的值计算总和

  27. 27

    PostgreSQL根据一列的值触发,以更改或更新每一行中另一列的值。

  28. 28

    如果同一行中另一列中的值匹配,如何比较一列的两个值

  29. 29

    如何基于另一列中的值将值移到新列中

热门标签

归档