How to select all values that are not numeric across multiple columns in SQL Server? -
i have 1 table prices
id price_1 price_2 price_3 p1 10 11 12 p2 13 14 15 p3 aa 16 bb p4 19 cc 20
as can see above, values columns price_1
, price_2
, price_3
might not numeric.
what want first find non-numeric values
, give summary (concatenate
non-numeric values , columns 1 id)
so above example, want is
id bad_columns bad_values p3 price_1,price_3 aa,bb p4 price_2 cc
how should write query?
you this:
with cte ( select id, value, columnname prices unpivot ( value columnname in ([price_1], [price_2], [price_3]) ) upvt isnumeric(value) = 0 ) select id, badcolumns = stuff((select ', ' + columnname cte cte.id = t.id xml path(''), type ).value('.', 'nvarchar(max)'), 1, 2, ''), badvalues = stuff(( select ', ' + value cte cte.id = t.id xml path(''), type ).value('.', 'nvarchar(max)'), 1, 2, '') (select distinct id cte) t
the first part unpivots query columns rows, second part concatenate "bad" rows 1 column.
Comments
Post a Comment