Author |
Topic |
LOOKUP_BI
Constraint Violating Yak Guru
295 Posts |
Posted - 2011-04-18 : 13:52:22
|
I have 3 tables with following columns Table A ID intValue varchar(max)Example Data 1 3,620.002 11/1/2011 2:22:09 AM3 4.144 B--5 NULL6 7 Mar 6 2010 12:00AM 8 56Table BID intNumber floatDate datetimeChar varchar(max)Flag varchar(1)Example Data ID Number Date Char Flag1 36202 11/1/2011 2:22:093 4.144 B--5 NULL67 2010-03-06 00:00:00.0008 56Table CDt_Id intID intExample Data Dt_Id ID1 12 21 33 42 53 62 71 8Dt_Id 1 represents Numeric data type 2 represents DateTime data type 3 represents Char data typeFlow of process, 1) Data is first inserted into Table A,2) Join table A with C on column ID to identify which column to update in Table B.If dt_Id =1 then insert into clmn Number, if dt_id=2 then clmn Date else clmn CharMy problem now is I would like to identify if the value already exist in either 1 of the 3 clmn [Number,Date,Char] for a specific ID.If exist update Flag to 'D' in table B.This is what I have done so far.I have tried to just SELECT those values that already exist, but it gives me an error.If execute the below by commenting a single where condition at a time value is returned correctly, but not able to execute it a whole.Here is what I getMsg 8114, Level 16, State 5, Line 1Error converting data type varchar to float.ResultsID Dt_ID1 1SELECT a.ID,c.Dt_IDFROM dbo.A a INNER JOIN dbo.B bON a.ID=b.ID INNER JOIN dbo.C cON b.ID=c.ID AND c.ID=a.ID WHERE (c.Dt_ID=1 AND ISNULL(CONVERT(FLOAT,Replace(a.VALUE, ',', '')),0)=ISNULL(b.Number,0)) OR(c.Dt_ID=2 AND ISNULL(CONVERT(DATETIME,a.VALUE),GETDATE())=ISNULL(b.[Date],GETDATE())) OR(c.Dt_ID=3 AND ISNULL(CONVERT(VARCHAR(MAX),a.VALUE),0)=ISNULL(b.[Char],0)) |
|
LOOKUP_BI
Constraint Violating Yak Guru
295 Posts |
Posted - 2011-04-18 : 14:59:50
|
Anybody has any Ideas? Im stuck on this and cant proceed.Plz Advice |
 |
|
LOOKUP_BI
Constraint Violating Yak Guru
295 Posts |
Posted - 2011-04-18 : 15:31:21
|
Here is the tsql code for the schema and sample data.CREATE TABLE [dbo].[A]( [ID] [int] NULL, [VALUE] [varchar](max) NULL) ON [PRIMARY]GOCREATE TABLE [dbo].[B]( [ID] [int] NULL, [Number] [float] NULL, [Date] [datetime] NULL, [Char] [varchar](max) NULL, [Flag] [varchar](1) NULL) ON [PRIMARY]GOCREATE TABLE [dbo].[C]( [Dt_Id] [int] NULL, [Id] [int] NULL) ON [PRIMARY]GOINSERT INTO [dbo].[A] (ID,VALUE)SELECT 1,'3,260.00'UNION ALLSELECT 2,'11/1/2011 2:22:09 AM'UNION ALLSELECT 3,'4.14'UNION ALLSELECT 4,'B--'UNION ALLSELECT 5,NULLUNION ALLSELECT 6,''UNION ALLSELECT 7,'Mar 6 2010 12:00AM 'UNION ALLSELECT 8,'56'GOINSERT INTO [dbo].[B] (ID,Number,[Date],[Char],Flag)SELECT 1,3260,NULL,NULL,NULLUNION ALLSELECT 2,NULL,'2011-11-01 02:22:09.000',NULL,NULLUNION ALLSELECT 3,4.14,NULL,NULL,NULLUNION ALLSELECT 4,NULL,NULL,'B--',NULLUNION ALLSELECT 5,NULL,NULL,NULL,NULLUNION ALLSELECT 6,NULL,NULL,NULL,NULLUNION ALLSELECT 7,NULL,'2010-03-06 00:00:00.000',NULL,NULLUNION ALLSELECT 8,56,NULL,NULL,NULLGOINSERT INTO [dbo].[C] (Dt_Id,ID)SELECT 1,1UNION ALLSELECT 2,2UNION ALLSELECT 1,3UNION ALLSELECT 3,4UNION ALLSELECT 2,5UNION ALLSELECT 3,6UNION ALLSELECT 2,7UNION ALLSELECT 1,8GO |
 |
|
|
|
|