#sql #sql-server #reportbuilder3.0
Вопрос:
Я создаю простой отчет в построителе отчетов Microsoft SQL Server. Все работает нормально без одной колонки «Цена за единицу». Я хочу отобразить там результат [Общая цена / количество]. Как я могу это сделать в запросе ниже?
SELECT [ArticleIndex] ,[ArticleName] ,[Size] ,ISNULL(COUNT(1), 0) AS 'Quantity' ,ISNULL(SUM([Price]), 0) AS 'TotalPrice' ,ISNULL(SUM([Price), 0) AS 'UnitPrice' = this is what i want to calculate FROM [dbo].[vw_WarehouseTransaction] WHERE [TransactionTime] gt;= @DateFrom AND [TransactionTime] lt; @DateTo AND [CompanyId] = @Company AND [TransactionTypeId] = @TransactionType GROUP BY [ArticleIndex] ,[ArticleName] ,[Size] ORDER BY [ArticleIndex] ,[ArticleName] ,[Size]
Комментарии:
1. В чем дело
ISNULL(SUM([Price]), 0) / ISNULL(COUNT(1), 0)
?2. Примечание: не используйте одинарные кавычки (
'
) для псевдонимов. Одинарные кавычки предназначены для буквальных строк, без разделителей имен объектов. Некоторые методы использования одинарных кавычек для псевдонимов устарели и работают только тогда, когда вы их определяете, а не где-либо еще;ORDER BY 'Quantity'
не будет упорядочиваться по вашему столбцу с псевдонимами как'Quantity'
. Придерживайтесь имен объектов и псевдонимов, которые не нуждаются в идентификации с разделителями, и если вы должны идентифицировать их с разделителями, используйте идентификатор T-SQL, скобки ([]
) или двойные кавычки ANSI-SQL ("
).3. Это показывает мне точно такой же результат, как «TotalPrice» В UnitPrice, который я хочу иметь -gt; TotalPrice / Количество, чтобы знать, сколько стоит одна единица чего-либо, исходя из общей цены всего
4. Так ты это хочешь сказать
TotalPrice / Quantity = TotalPrice
? Тогда по определениюQuantity
должно иметь значение1
.