2011-01-28 9 views
1

以下の簡単なクエリがあります。しかし、なぜ私はフィールド名とエラー値のwhere句で無効な列名エラーを取得しているのかわかりません。無効な列名です。ERROR

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])) 
+5

を試してみてください、あなたが –

+1

を助けたい場合は、それを自分で固定し始めるまでの時間が、私はそれがチルダとは何かを持っているひそか疑いを持っています。チルダの代わりに「なし」という単語を使用するか、おそらくNULLを使用してみてください。 –

+0

SQL Server 2005 – Programmer

答えて

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]'))