将多个记录连接到单个记录

时间:2018-11-17 07:43:52

标签: sql sql-server join

基本上,我正在尝试合并两个表。 但是输出似乎与JOIN创建的NORMAL输出完全不同。 这听起来有些愚蠢,但是由于我不知道如何进行详细说明,因此我准备了一个快照。 (点击下面的链接)

desired output

与普通的JOIN语句的区别在于,表“ REAGENT_LOTS_ADDITIONALINFO”的多个记录合并为表REAGENT_LOTS的单个记录。

预先,我欠你们大家。谢谢。

1 个答案:

答案 0 :(得分:1)

遵循此模式:

SELECT
  lot.reagentlotid,
  lot.reagentlotdesc,
  MAX(CASE WHEN inf.attributeid = 'rl_a01' THEN inf.textvalue END) as rl_a01,
  MAX(CASE WHEN inf.attributeid = 'rl_a02' THEN inf.textvalue END) as rl_a02,
  ... --add more "max case when" here

FROM
  Reagent_lots lot
INNER JOIN
  reagent_lots_additionalinfo inf
    ON inf.reagentlotid = lot.reagentlotid
GROUP BY 
    lot.reagentlotid,
    lot.reagentlotdesc

在...的位置,根据需要添加MAX CASE WHEN的重复次数,以涵盖属性行到列的转换

Sqlserver确实具有专有的PIVOT语法,但我倾向于采用这种模式,因为它适用于每个数据库供应商