2015-12-10 6 views
1

Я столкнулся с различными проблемами. В запросе выбора я хочу добавить временный столбец на лету, основываясь на другом значении столбцов.Как добавить столбец на лету?

У меня есть 2 колонки

IsOpeningClosingDateToo (tinyint), 
HearingDate Date 

Теперь я хочу, чтобы проверить, что если IsOpeningClosingDate = 1, то

Select HearingDate, HearingDate as 'OpeningDate' 

Если IsOpeningClosingDate = 2

Select HearingDate, HearingDate as 'ClosingDate' 

Я пытался сделать это но не удался:

SELECT 
     ,[HearingDate] 
     ,CASE [IsOpeningClosingDate] 
     when 1 then [HearingDate] as OpeningDate 
     When 0 then [HearingDate] as ClosingDate 
     end as 'test' 
    ] 
    FROM [LitMS_MCP].[dbo].[CaseHearings] 
+2

Значит, вы просто хотите изменить псевдоним столбца и не изменить выбранный столбец? – Dane

+0

Вместо изменения имени столбца используйте значение как одно имя столбца, вы уже знаете, какие значения входят в этот столбец. вы хотите что-то другое? – Ajay2707

+1

Что делать, если для первых 3 строк 'IsOpeningClosingDate' равно 1, а для остальных записей - 0, то какой должен быть ваш вывод? потому что вы говорите о столбце «псевдоним», который является именем всего столбца данных. Невозможно изменить «по строкам». –

ответ

3

Я предлагаю вернуть три колонны. Тогда вы можете получить значение в на стороне приложения:

SELECT HearingDate, 
     (CASE WHEN IsOpeningClosingDate = 1 THEN HearingDate END) as OpeningDate, 
     (CASE WHEN IsOpeningClosingDate = 0 THEN HearingDate END) as ClosingDate 
FROM [LitMS_MCP].[dbo].[CaseHearings]; 

В качестве альтернативы, вы можете просто принести HearingDate и IsOpeningClosingDate и сделать сравнение в Python.

Важным моментом является то, что столбцы в SQL-запросе фиксируются SELECT. Вы не можете изменять имена или типы столбцов условно в запросе.

+0

вы только что выполнили мою работу (Y) –

Смежные вопросы