Нужна помощь в преобразовании этого фрагмента кода из Oracle в SQL Server - PullRequest
0 голосов
/ 05 ноября 2019
select pln_products as "Products",round((sum(PLN_ANNUAL)/12),2) AS "Monthly Charges",count(pln_products) as "Count"
from test1
where pln_start_date<=(SELECT LAST_DAY(:select_date) FROM dual)
and ((pln_end_date is null) or (pln_end_date >= (SELECT TRUNC(LAST_DAY(ADD_MONTHS(:select_date,-1))+1) from dual)))
and PLN_CUSTOMER_NAME= :PLN_CUSTOMER_NAME
group by pln_products;

1 Ответ

0 голосов
/ 05 ноября 2019

вы не используете двойной апостроф "в SQL. Вы используете единственный апостроф".

Вы также должны сначала объявить переменные, чтобы их можно было использовать позже в вашем запросе.

Функции даты, которые я использовал, выглядят немного сложнее, но они работают.

declare @PLN_CUSTOMER_NAME nvarchar(150) = ...  -- define the Variables
declare @select_date date = ...

select pln_products as 'Products'
    ,round((sum(PLN_ANNUAL)/12),2) AS 'Monthly Charges'
    ,count(pln_products) as 'Count'
from test1
where pln_start_date <= (SELECT dateadd(day, -1, dateadd(month, 1, datefromparts(year(@select_date),month(getdate()),1))) FROM dual)
    and ((pln_end_date is null) or (pln_end_date >= (SELECT dateadd(day, -1, dateadd(month, 2, datefromparts(year(@select_date),month(getdate()), 1))) from dual)))
    and PLN_CUSTOMER_NAME= @PLN_CUSTOMER_NAME
group by pln_products

Надеюсь, я смогу вам помочь ... Макс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...