Я пытаюсь получить информацию за последние десять месяцев, но у меня есть несколько ошибок. Во-первых, мой запрос получает данные еще в 2013 г. Во-вторых, я вижу дублей в моих результатах на основе PolEffDate
поля, как это:SELECT DISTINCT, показывающий повторяющиеся даты на адрес электронной почты клиента
EntityID | PolEffDate | EMail | CustNo | Producer | BusinessPhone
abcde-12345-fghij-67890 | 2013-09-24 | [email protected] | 31000 | Bob Builder | 123-456-7890
abcde-12345-fghij-67890 | 2013-12-01 | [email protected] | 31000 | Bob Builder | 123-456-7890
abcde-12345-fghij-67890 | 2014-09-24 | [email protected] | 31000 | Bob Builder | 123-456-7890
Вот мой SQL-запрос:
SELECT DISTINCT
CONVERT(VarChar(36), Customer.CustId) AS EntityID
, BasicPolInfo.PolEffDate, Customer.EMail, Customer.CustNo
, (isnull(Employee.Firstname + ' ','') + isnull(Employee.LastName,''))
AS Producer, Employee.BusFullPhone
FROM
Customer INNER JOIN BasicPolInfo ON Customer.CustId = BasicPolInfo.CustId INNER JOIN
Transaction ON BasicPolInfo.PolId = Transaction.PolId INNER JOIN
GeneralBranch ON Customer.GLBrnchCode = GeneralBranch.GLBrnchCode INNER JOIN
GeneralDepartment ON Customer.GLDeptCode = GeneralDepartment.GLDeptCode INNER JOIN
GeneralDivision ON Customer.GLDivCode = GeneralDivision.GLDivCode INNER JOIN
Employee ON BasicPolInfo.ExecCode = Employee.EmpCode
WHERE
BasicPolInfo.PolExpDate >= DATEADD(MONTH, -10,CONVERT(VARCHAR(11),GETDATE(),106))
AND BasicPolInfo.PolExpDate <= CONVERT(VARCHAR(11),GETDATE(),106)
AND Customer.Active = 'Y'
AND Customer.typeCust = 'P'
Благодарим за помощь. Я постараюсь ответить на любые вопросы.
Может конвертировать PolExpDate в DATE вместо преобразования сравнения GETDATE в –
Вашей даты логики VARCHAR является излишне сложным, попробуйте что-то вроде: 'МЕЖДУ DATEADD (MONTH, -10, CAST (GETDATE() AS DATE)) И CAST (GETDATE() AS DATE) ' – Kittoes0124
какой тип данных является PolExpDate? – xQbert