Мне было интересно, может ли кто-нибудь помочь, пожалуйста, у меня есть процедура ниже, я пытаюсь включить ее, чтобы конечный пользователь мог передать только часть года даты, и он будет запрашивать на основе этого параметра, поэтому на данный момент Я запрашиваю между ContractDate.ContractDate >= 01/01/2015 AND <= 31/12/2015
, но я хотел бы, чтобы наши пользователи могли вводить «2016», например, в текстовое поле в качестве параметра, который передается, и обновлял бы часть года в вышеуказанных критериях запроса на основе этого, но оставляя месяц и дневная часть цела, так они могут войти
Я совсем новичок, когда дело доходит до sql, поэтому любая помощь с радостью приветствуется.
SELECT TOP 100 PERCENT
dbo.Users.LoginName,
CAST(DATENAME(m, dbo.ContractDate.ContractDate) AS varchar) AS DatePeriod,
SUM(CASE WHEN dbo.Contract.Contract = 1 THEN 1 ELSE 0 END) AS Contract,
SUM(CASE WHEN dbo.contract.contract = 0 THEN 1 ELSE 0 END) AS Permanent
FROM
dbo.ContractSkill
INNER JOIN
dbo.Users
INNER JOIN
dbo.Contract ON dbo.Users.UserId = dbo.Contract.UserId
INNER JOIN
dbo.ContractDate ON dbo.Contract.ContractId = dbo.ContractDate.ContractId
ON dbo.ContractSkill.ContractId = dbo.Contract.ContractId
WHERE
(dbo.ContractDate.DNS = 0)
AND (dbo.ContractSkill.SkillId = 30960)
AND (dbo.ContractDate.ContractDate >= CONVERT(DATETIME, '2015-01-01 00:00:00', 102))
AND (dbo.ContractDate.ContractDate <= convert(DATETIME, '2015-12-31 00:00:00', 102))
GROUP BY
CAST(DATENAME(m, dbo.ContractDate.ContractDate) AS varchar),
MONTH(dbo.ContractDate.ContractDate), dbo.Users.LoginName
ORDER BY MONTH(dbo.ContractDate.ContractDate)
Year(dbo.Contract .ContractDate) = 2015
- person Shell   schedule 04.11.2016@Contract_Year tinyint
. - person Shell   schedule 04.11.2016Where Year(dbo.Contract.ContractDate) = @Contract_Year
вот так. - person Shell   schedule 04.11.2016varchar
переменных и параметров, которые вы используете - person marc_s   schedule 04.11.2016