我正在尝试在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,所以这段代码返回错误。这里是否可以有一个列可以容纳子查询的所有结果?
谢谢, 哈
答案 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;