列名无效ERROR

时间:2011-01-28 20:41:41

标签: sql sql-server sql-server-2005 tsql

我在下面有一个简单的查询。但我不知道为什么我的字段名称和where子句中的错误值收到无效的列名错误。

  select * From (
  select [SubscriberDataId]
  ,Case When ISNUMERIC([SubscriberCode]) = 0 Then cast([SubscriberCode]as varchar(9)) Else '~' end as [SubscriberCode]
  ,Case When ISDATE([Dob]) = 0 Then Cast([Dob] as Varchar(9)) Else '~' end as [Dob]
  ,Case When ISNUMERIC([FacetsGroup]) = 0 Then cast([FacetsGroup]as varchar(9)) Else '~' end as [FacetsGroup]
  from Facets.SubscriberData) [sd]
  Unpivot
  (ErrorValue for FieldName in ([SubscriberCode],
   [Dob],[FacetsGroup])) as x
  where x.ErrorValue <> '~' and
          NOT EXISTS (SELECT *
    FROM Elig.dbo.ErrorTable 
                WHERE TableName = facets.SubscriberData
    AND FieldName IN( [x].[SubscriberCode],[x].[Dob],[x].[FacetsGroup])
                AND ErrorValue IN( [SubscriberCode],[Dob],[FacetsGroup]))

1 个答案:

答案 0 :(得分:1)

select * From 
  (select [SubscriberDataId], 
        Case When ISNUMERIC([SubscriberCode]) = 0 
            Then cast([SubscriberCode]as varchar(9)) 
            Else '~' end as [SubscriberCode],
        Case When ISDATE([Dob]) = 0 
            Then Cast([Dob] as Varchar(9)) 
            Else '~' end as [Dob],
        Case When ISNUMERIC([FacetsGroup]) = 0 
            Then cast([FacetsGroup]as varchar(9)) 
            Else '~' end as [FacetsGroup]   
from Facets.SubscriberData) [sd]   
Unpivot   (ErrorValue for FieldName in ([SubscriberCode],    [Dob],[FacetsGroup])) as x   where x.ErrorValue <> '~' 
and  NOT EXISTS (SELECT *  FROM Elig.dbo.ErrorTable                  
                WHERE TableName = facets.SubscriberData     
                AND FieldName IN( '[x].[SubscriberCode]','[x].[Dob]','[x].[FacetsGroup]')
                AND ErrorValue IN( '[SubscriberCode]','[Dob]','[FacetsGroup]'))