Я пытаюсь написать запрос, который выберет данные из таблицы.из-за разных версий базы данных, есть две возможные структуры исходной таблицы, где более новая версия имеет на 2 поля больше, чем старая.
Я попытался определить более старую структуру и заменить столбцы наNULL, а также попытался написать 2 отдельных запроса с оператором IF и указанием на правильный.Ни одно из этих решений не работает, и в обоих случаях кажется, что движку SQL не удается проверить эти 2 столбца.
Примеры моих попыток решения:
IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = Object_id(N'[dbo].[Test2]')
AND type IN ( N'U' ))
BEGIN
CREATE TABLE [dbo].[test2]
(
[id] [INT] IDENTITY(1, 1) NOT NULL,
[statusid] [INT] NULL
)
END
go
DECLARE @Flag INT = 0
IF EXISTS(SELECT 1
FROM sys.columns
WHERE NAME = N'TestId'
AND object_id = Object_id(N'dbo.Test2'))
SET @Flag = 1
--Solution #1
IF @Flag = 1
SELECT id,
statusid,
testid
FROM dbo.test2
ELSE
SELECT id,
statusid
FROM dbo.test2
--Solution #2
SELECT id,
statusid,
CASE
WHEN @Flag = 1 THEN testid
ELSE NULL
END AS TestId
FROM dbo.test2