使用别名时格式化sql

时间:2013-12-11 00:37:48

标签: sql sql-server tsql alias

我在脚本中有这个sql块:

update #Result
Set FacilityTotals = 'Facility Total: IS Needed Yes: ' + 
                     (select count(ISNeeded_YN) 
                      from #ISReview C, #Result R 
                      where CustomerID = C.CustomerID and ISNeeded_YN = 'Y') + 
                     ' No: ' + 
                     (select count(ISNeeded_YN) 
                      from #ISReview C 
                      where CustomerID = C.CustomerID and ISNeeded_YN = 'N') + 
                      ' IS Yes: ' + 
                     (select count(IS_YN) 
                      from #Result C 
                      where CustomerID = C.CustomerID and IS_YN = 'Y') + 
                     ' No: ' + 
                     (select count(IS_YN) 
                      from #Result C 
                      where CustomerID = C.CustomerID and IS_YN = 'N')

当我尝试运行它时,我收到以下错误:

  

Msg 209,Level 16,State 1,Line 500
  不明确的列名称'CustomerID'。
  Msg 209,Level 16,State 1,Line 500
  不明确的列名'ISNeeded_YN'   Msg 209,Level 16,State 1,Line 500
  不明确的列名'ISNeeded_YN'。

ISNeeded_YN位于#isReviewTable,而CustomerID位于两个表中。我对这种类型的sql很陌生,我该怎么写呢?

1 个答案:

答案 0 :(得分:4)

您需要在列前添加表名。

例如,

这篇文章。

CustomerID = C.CustomerID

它知道右侧来自#IsReview,但它不知道左侧使用哪个表。这可能是显而易见的,但是sql只知道你在多个表上有那个列而且它不知道该怎么做。

R.CustomerID = C.CustomerID会在该特定位置为您解决问题。

您需要在引用多个表中使用的列时执行此操作。