Я столкнулся с проблемой группы по DATEPART(). Мой кодГруппа DATEPART() error/error
SELECT con.Name, con.contractID, Sum(cplanit.Cost) as costs, DATENAME(month,month(cplanit.PaymentDate)) as month, year(cplanit.PaymentDate) as year
FROM ContractTable con
INNER JOIN [a lot of tables] ON [joins proofed and working fine]
Group By con.Name, con.contractID, DATEPART(month,cplanit.PaymentDate), DATEPART(year,cplanit.PaymentDate)
Я получаю это:
Adobe CLP Agreement - Initial purchase C00012121 18.7500 January 2011
Adobe CLP Agreement - Initial purchase C00012121 18.7500 January 2010
Adobe CLP Agreement - Initial purchase C00012121 18.7500 January 2011
Adobe CLP Agreement - Initial purchase C00012121 18.7500 January 2010
Adobe CLP Agreement - Initial purchase C00012121 18.7500 January 2011
Одинаковые записи. Затраты группируются точным PaymentDate, а не месяцем и годом - это то, что мне нужно сделать. Эта проблема сохраняется, если я удаляю Datename и год в предложении SELECT или если я группирую только месяц или год. Группировка за исключением DATEPART(), month() или year() для групповой работы. Может быть, это что-то простое, что я пропустил? Иногда я просто слепой.
Встречающегося в SQL Server Management Studio/SQL Server 2012.
Также: Почему предложение group by отличается от полей SELECT? Вы пытались: GROUP BY con.Name, con.contractID, DATENAME (месяц, месяц (cplanit.PaymentDate)), year (cplanit.PaymentDate) – ericpap
«Затраты сгруппированы точным PaymentDate» Я должен исправить себя здесь, там это только один PaymentDate в месяц, вопреки тому, что я думал. Извините за мой пост, я получил решение: The Joins выпустил только несколько строк. Поэтому «отчетливый» решает ее. Большое спасибо, так или иначе, stackoverflow proofed очень полезно для меня несколько раз :) –
@TedOckham. , , Попробуйте удалить вопрос. –