У меня есть таблица, подобная приведенной ниже:
InvoiceNum, CreditNum, ItemID, TotalCreditDetail, TotalCredit, TotalCost, SumCreditDetailTaxed
001 , 001 , ITEM-A, 340 , 20811 , 20894.84 , 340
001 , 002 , ITEM-B, 0 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-C, 4510 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-D, 1424 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-E, 2230 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-F, 5225 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-G, 3400 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-H, 1242 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-I, 2200 , 20811 , 20894.84 , 20471
001 , 002 , ITEM-J, 240 , 20811 , 20894.84 , 20471
Я пытаюсь получить столбец с «uncategorizedcredit», в основном кредит, не связанный с ItemID. TotalCredit является уникальным для InvoiceNum, поэтому я получу это число, вычтя FIRST_VALUE(TotalCredit) OVER (PARTITION BY InvoiceNum) - SUM(TotalCreditDetail) OVER (PARTITION BY InvoiceNum) as UncategorizedCredit
? Я думаю, что, возможно, ответил на мой собственный вопрос о том, как рассчитать UncategorizedCredit, но я не уверен. Я только что нашел FIRST_VALUE
сегодня. В настоящее время я использую SUM(CASE WHEN... )
для его расчета, но это грязно и, кажется, требует от меня SUM()
с группировкой по, а затем разгруппировкой по, чтобы получить все детали, которые мне нужны для отчета.
После этого мне понадобится СУММИТЬ столбец UncategorizedCredit, чтобы получить итоговую сумму за весь отчет в CrystalReports. Это где немного сложнее, так как отчет сгруппирован по ITEM, а InvoiceNum 002 может иметь ITEM- C, а ITEM-D, InvoiceNum 003 может иметь ITEM-H и ITEM-I, et c. Право теперь я использую переменные для добавления чисел из деталей отчета к итогу. Затем я хотел бы вернуть go и вычесть любой неклассифицированный кредит из общей суммы.
Мой вопрос: как мне добавить это значение для каждого счета к отчету, сгруппированному по ITEM-ID? Я подумал об использовании массива для хранения InvoiceNum того, что я уже суммировал, но максимальные массивы равны 1000, и в этом отчете будет намного больше этого числа.
Я думаю, я мог бы использовать SUM(UncategorizedCredit) OVER() as TotalUncategorizedCredit
в новый оператор выбора, выбранный из предыдущего оператора выбора?
Я не могу использовать вложенные операции выбора, поскольку CrystalReports применяет к данным предложение filter / where, а итоговые значения не будут точными. Чтобы получить TotalCreditDetail и SumCreditDetailTaxed, я в настоящее время использую ~ 8-10 СОЕДИНЕНИЙ различных типов, некоторые RIGHT OUTER JOIN (SELECT * FROM table) ON x = y
. На самом деле у меня нет SQL передо мной, и я завтра попробую СУММ, но если FIRST_VALUE
не сработает, я не уверен, что еще делать.
Это будет возможно, разница составит всего тысячу долларов, но я пытаюсь учесть все.