如果一列中有多个记录填充了不同的值,则使用不同列中的值

时间:2018-12-18 20:23:45

标签: sql sql-server

我对SQL还是很陌生,我尝试用Google搜索它,但是找不到答案,因此在这里发布。任何帮助表示赞赏。

我的桌子是:

enter image description here

我的输出应如下所示:

enter image description here

我的输出应基于以下条件:

  1. 如果在“ val”列中为同一NID填充了多个记录,且具有不同的值(非null),则使用Val,其中Typ = T。
  2. 对于相同的NID,如果Typ“ T”的值为空,则在Typ = O的情况下获取“ Val”
  3. 对于相同的NID,如果Typ“ O”的值为空,则在Typ = T的情况下获取“ Val”

1 个答案:

答案 0 :(得分:1)

我相信这就是您想要的。让我知道它是否可以满足您的需求。

SELECT TT.NID
    , COALESCE(TT.Val, OO.Val) AS Val
FROM 
(
    SELECT T.NID
        , T.Val
    FROM [SomeTable] T
    WHERE T.Typ = 'T'
) TT
LEFT JOIN 
(
    SELECT O.NID
        , O.Val
    FROM [SomeTable] O
    WHERE O.Typ = 'O'
) OO
    ON TT.NID = OO.NID