SQL列比较

时间:2014-03-04 17:34:42

标签: sql sql-server subquery

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

这是错误

子查询返回的值超过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) )

1 个答案:

答案 0 :(得分:2)

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

当使用几乎任何具有返回多行的子查询的运算符时,您将收到此错误。以下是来自MS的一些有用信息: Clicky!