Sample Header Ad - 728x90

SQL geography::point null parameter error when parameter is not null?

6 votes
5 answers
5852 views
I was getting this error: 'geography::Point' failed because parameter 1 is not allowed to be null. On this sql: SELECT [ID], geography::Point([lat], [long], 4326) AS [loc] FROM ( SELECT [ID], CONVERT(float, [lat]) AS [lat], CONVERT(float, [long]) AS [long] FROM ( SELECT [ID], [lat], [long], ROW_NUMBER() OVER (PARTITION BY [ID] ORDER BY [EFFDT] desc) AS [sequence] FROM [GEO] ) AS temp1 WHERE [sequence] = 1 AND [lat] IS NOT NULL AND [long] IS NOT NULL ) AS temp2 ORDER BY [ID] But there where no null values, and I was only getting the error on our production machine (Production 13.0.4422.0) and not on our development machine (Dev 13.0.1728.2). After hours of searching and retrying I found that by reordering some stuff this would work: SELECT [ID], [loc] FROM ( SELECT [ID], geography::Point([lat], [long], 4326) AS [loc], ,ROW_NUMBER() OVER (PARTITION BY [ID] ORDER BY [EFFDT] desc) AS [sequence] FROM [GEO] WHERE [lat] IS NOT NULL AND [long] IS NOT NULL ) AS temp WHERE [sequence] = 1 I would really like to understand what I was doing wrong in the first query and why this worked in the second query? The first query I tried to get only the rows that have the most recent records based on a sequence number calculated using an effective date column, and then convert lat and long data to a geography type. In the second query I convert the lat and long data and then filter. I thought I was being more efficient with the first query.
Asked by user802599 (463 rep)
Oct 9, 2017, 02:58 AM
Last activity: Jan 8, 2024, 08:49 PM