将列添加到SQL表

时间:2017-12-07 17:09:32

标签: sql sql-server sql-server-2014

我正在尝试在SQL中为此查询添加一个列,如下所示 -

SELECT DISTINCT
    h.tradingitemid
    ,h.securityid
    ,h.currencyId
    ,CUSIP =
         (
             SELECT gs.holdingsymbol
             FROM CPR.dbo.holdingsymbol_tbl gs
             WHERE gs.holdingsymboltypeid = 2
         )
FROM cpr..holding_tbl             h
INNER JOIN cpr..HoldingSymbol_tbl hs ON h.holdingid = hs.holdingId
WHERE h.userCompanyId = 10;

但问题是这个子查询返回的结果超过1,所以这段代码返回错误。这里是否可以有一个列可以容纳子查询的所有结果?

谢谢, 哈

3 个答案:

答案 0 :(得分:0)

您可以尝试这样做:

CUSIP=(Select TOP 1 gs.holdingsymbol 
           from dbo.holdingsymbol_tbl gs where gs.holdingsymboltypeid=2)

答案 1 :(得分:0)

您可以使用xml将查询的所有结果存储到列

CUSIP=(Select gs.holdingsymbol 
           from dbo.holdingsymbol_tbl gs where gs.holdingsymboltypeid=2 for xml path(''))

答案 2 :(得分:0)

您不需要子查询,只需要JOIN上的其他条件,就像这样:

SELECT DISTINCT
    h.tradingitemid
    ,h.securityid
    ,h.currencyId
    ,CUSIP = hs.holdingsymbol
FROM cpr..holding_tbl h
INNER JOIN cpr..HoldingSymbol_tbl hs ON h.holdingid = hs.holdingId AND hs.holdingsymboltypeid = 2
WHERE h.userCompanyId = 10;