2014-08-27 2 views
0

Для моего проекта мы используем MS SQL 2008. В подзапросе мне нравится искать в предложении WHERE до последнего дня текущего (в цикле SQL) года. Это должно быть примерно так:SQL WHERE date частично поле и частично предопределенная строка

WHERE datefieldsubquery = currentyearparentquery+'-12-31 23:59:00' 

Но в подзапросе нет результата при использовании этого. Например, при запросе:

WHERE datefieldsubquery = '2014-12-31 23:59:00' 

запрос возвращает результат. Мне нравится, что '2014' динамически унаследован от родительского запроса. Это возможно в SQL?

- изменение - Оба поля являются датами.

Реальный полный запрос:

SELECT factuurregel.[Internal costkind] AS code, 
    COUNT(factuurregel.[Internal costkind]) AS total, 
    YEAR(factuurregel.[Invoice date lease company]) AS maand,      
    (
     SELECT COUNT(leasecontract.[Contract Ending Date]) AS autos 
     FROM [test$Lease Contract] AS leasecontract     
     WHERE (leasecontract.[Status] = '0' OR leasecontract.[Status] = '1') 
     AND YEAR(leasecontract.[Contract Activation Date]) <= YEAR(factuurregel.[Invoice date lease company]) 
     AND (YEAR(leasecontract.[Contract Ending Date]) > YEAR(factuurregel.[Invoice date lease company]) 
     OR leasecontract.[Contract Ending Date] = '1753-01-01 00:00:00')             
    ) AS autos 
    FROM [test$Invoice line] AS factuurregel 
    LEFT JOIN [test$Lease Car] AS leasecar ON factuurregel.[License No_] = leasecar.[License No_] 
    WHERE factuurregel.[Internal costkind] >= '200' 
    AND factuurregel.[Internal costkind] < '300' 
    AND (leasecar.[Licence Type] = 1 OR leasecar.[Licence Type] = 2) 
    GROUP BY YEAR(factuurregel.[Invoice date lease company]),factuurregel.[Internal costkind] 
    ORDER BY factuurregel.[Internal costkind] 
+1

Как насчет 'WHERE год (datefieldsubquery)

+1

Каковы ваши типы данных? Является ли datefieldsubquery датой? Дата и время? VARCHAR? Является ли currentyearparentquery целочисленным? VARCHAR? То, что вы просите, возможно, но нам нужно больше деталей, чтобы помочь вам. –

+0

Что представляет собой текущий запрос в вашем запросе? –

ответ

1

Попробуйте этот путь в вашем WHERE пункте

WHERE datefieldsubquery = Convert(varchar(50),YEAR(GETDATE()))+'-12-31 23:59:00' 
+0

Это решение работает для меня! Строковый разговор - это решение. – JelleP

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