SQL查询-将一行中的值添加到所有记录

用户名

我有一个SQL Server查询,可以从多个表中获取数据,目前我处于这种情况:

我得到每个客户和产品的数据。例如,我有5种产品:A,B,C,D,E,那么在PRODUCT IS NULL的那一行还有一个额外的行,但其余各列包含应该用于我的每个产品的值。

我得到这样的数据:

TID  Customer   PRODUCT     VAL1        VAL2        VAL3        VAL4
1    CUST       NULL        CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       A           NULL        NULL        NULL        NULL    
1    CUST       B           NULL        NULL        NULL        NULL    
1    CUST       C           NULL        NULL        NULL        NULL    
1    CUST       D           NULL        NULL        NULL        NULL    
1    CUST       E           NULL        NULL        NULL        NULL    

如何将其转换为此输出?

TID  Customer   PRODUCT     VAL1        VAL2        VAL3        VAL4
1    CUST       A           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       B           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       C           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       D           CONTENT1    CONTENT2    CONTENT3    CONTENT4  
1    CUST       E           CONTENT1    CONTENT2    CONTENT3    CONTENT4  


EDIT: 

结果我有多个记录,按TID,客户,产品分类

戈登·利诺夫

一种方法使用窗口函数:

select t.*
from (select t.tid, t.customer, t.product
             max(t.val1) over (partition by t.tid) as val1,
             max(t.val2) over (partition by t.tid) as val2,
             max(t.val3) over (partition by t.tid) as val3,
             max(t.val4) over (partition by t.tid) as val4
      from t
     ) t
where t.product is not null;

另一种方法使用join

select tp.id, tp.customer, tp.product,
       tv.val1, tv.val2, tv.val3, tv.val4
from t tp join
     t tv
     on tp.id = tv.id and
        tp.product is not null and
        tv.product is null;

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将约束添加到sql表,以使表恰好有一行

SQL将日期转换添加到现有查询

SQL Server将一行添加到另一行但仅用于一列

有没有一种方法可以将属性仅添加到SQL中的1行?

将值添加到查询结果的一列

使用SQL Server通过存储过程调用将记录手动添加到SQL选择查询的结果中

将一行的所有值作为列表添加到新列中

在SQL(Postgres)中动态将前一行值添加到当前行值

尝试将SQL查询中的值添加到int后得到keyerror

SQL查询以获取访问表最后一行中所有列值的总和

如何从sql中提取数据,将列添加到一行并将其插入到另一个sql表中?

使用Hibernate将jTable中的所有行添加到MS SQL Server DB

将值添加到表示记录来自哪个表+ sql的列中

将点击的值添加到储值查询中

将联接添加到SQL查询

将JOIN添加到SQL查询

将SQL记录值放在一行中

SQL查询将所有数据带回到一行

如何将没有商品作为零值出售的周数添加到我的SQL查询中?

将两个插入查询添加到一行 php

在一行中获取节点的所有祖先的 SQL 查询

在用查询中的 MPmedia 项目填充之前,如何将数据添加到表的第一行?

SQL 查询 - 将记录添加到所有类别

将增量计数添加到 SQL 子查询的唯一值

SQL:选择不同但将一列的所有添加到不同的结果

将最后一行添加到分组查询

用于过滤至少一行中具有特定值的所有行的 SQL 查询

Snowflake-SQL - 将行从一个查询添加到另一个查询

SQL Big Query - 将新列添加到带有查询结果的表中?