2014-03-04 79 views
0

使用sql并有几个不同的表我已经加入到一起给我一些基于特定公司名称的数据。现在我创建了一个临时表来查看该公司是否对我做出了回应。我想我可以做的是选择where子句中的第二个表格,以便给我所有的公司,比如我的其他两个表中的公司。保持从该选择列表中获取错误。加入表格是删除或排除一些记录。我也想过使用一个cte表来获取数据,然后尝试在我的where子句中进行比较,但这也给我带来了错误。SQL列比较

这是错误

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。

下面是代码

 
select 
*

from ( select data_year, data_qtr,
firm_ui_acct, firm_legal_name, branch_trade_name,
branch_cnty, data_empl from r_firm f inner join r_branch b on f.firm_ui_acct = b.branch_ui_acct inner join r_data d on b.branch_id = d.branch_id where d.data_year = 2013 and d.data_qtr = 2 )nm inner join cealookup..r_region_matrix mtx on nm.branch_cnty = mtx.county_id

where mtx.region_code = 7 and mtx.region_type = 2 and ( ltrim(branch_trade_name) like (select firmname from TempData..NTVC_Big_Data_Survey)

OR ltrim(firm_legal_name) like (select firmname from TempData..NTVC_Big_Data_Survey) )

+0

最新错误说? –

+0

更新了问题并添加了错误消息 –

回答

2

这种比较是导致它: ltrim(branch_trade_name) like (select firmname from TempData..NTVC_Big_Data_Survey)。 在那里选择返回多行。如果您将LIKE替换为IN,它将运行。不知道这是否会实际返回所需的结果,但会运行。

当几乎任何运算符与返回多行的子查询结合使用时,您将得到此错误。这里是一些有用的信息在这从MS: Clicky!