Число пропорции в SQL

Мы пишем систему инвентаризации, где мы должны сказать, есть ли различие между Ожидаемыми Количествами и подсчитанным Количеством тогда, мы должны распределить различие в отчеты, используя целые числа. Например:

Exepected:

Item    |  Quantity  |  Shelf
Banana  |  2         |  1
Banana  |  1         |  2
Banana  |  2         |  3

Подсчитанный: 9 всего. Мы должны распределить 9 (в целом банане) через 3 отчета, дав:

Item    |  Quantity  |  Shelf
Banana  |  4         |  1
Banana  |  2         |  2
Banana  |  3         |  3

Заключительные количества должны быть приблизительно теми же самыми пропорциями как оригинал, и всегда в целых бананах. Никакие отрицательные бананы не могут существовать, но отчеты могут закончиться с 0.

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

Мы попробовали:

Ceiling(CountedQty * Expected/OriginalTotal) WHERE ROWNUMBER = 1
FLOOR(CountedQty * Expected/OriginalTotal) WHERE ROWNUMBER > 1

but this doesn't work when CountedQty - OriginalTotal > 2.

Ранее это было сделано в C#, используя петлю и держа бегущее общее количество, которого мы стараемся избегать из-за бизнес-требований.

1
nl ja de
Используйте ваш ПОЛ() выражение для ROWNUMBER> 1 . Тогда ряд 1 набора, чтобы посчитанную СУММУ (Количество), ГДЕ ROWNUMBER> 1 , чтобы получить остальных.
добавлено автор Barmar, источник
Я don' t действительно знают синтаксис SQL Server, I' m пользователь MySQL. I' m вполне уверенный вы can' t делают это в одном проходе, если вы не используете конструкцию перекручивания, потому что вы don' t знают, как все округление других рядов удастся до it' s сделанный.
добавлено автор Barmar, источник
Нужно больше разъяснения вашего правления распределения. Почему 4,2,3 не 3,2,4 банана? It' s все еще пропорциональное право?
добавлено автор gerrytan, источник
3,2,4 был бы также прекрасен. 3,3,3 было бы неправильным
добавлено автор Greg, источник
@Barmar, Который является большим ответом. Можно ли отправить его как ответ? Также для бонусных очков возможно написать SQL, чтобы только пройти однажды? Или у вас должно быть 2 заявления обновления?
добавлено автор Greg, источник
Никакие заботы. That' s, что мы думали. если вы хотите добавить свой оригинальный комментарий как ответ тогда I' ll принимают это
добавлено автор Greg, источник
@Justin, Джеймс прав. Одно количество банана на каждой полке. Могли быть другие типы еды на той же самой полке
добавлено автор Greg, источник
@Justin I' d принимают это you' у d есть только одно количество Бананов на полке, но у нее могло бы быть количество Кокосов на полке также?
добавлено автор James Khoury, источник
Тот же самый может быть Полкой многократно? Или Полка число уникален
добавлено автор Justin, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)