我正在創建包含按天分組的訂單表的SSRS報告。 現在,我可以輕鬆獲得當天的最大訂單值,並使用SSRS MAX()函數將其置於組標題中。SSRS 2008需要查詢最大訂單的客戶名稱
但是,我也想獲得相應的客戶名稱誰放置此訂單,並將其放置在組頭。
我們可以假設我的結果集只包含日期,名稱和順序值。 在SSRS 2008中有沒有辦法做到這一點?
謝謝
我正在創建包含按天分組的訂單表的SSRS報告。 現在,我可以輕鬆獲得當天的最大訂單值,並使用SSRS MAX()函數將其置於組標題中。SSRS 2008需要查詢最大訂單的客戶名稱
但是,我也想獲得相應的客戶名稱誰放置此訂單,並將其放置在組頭。
我們可以假設我的結果集只包含日期,名稱和順序值。 在SSRS 2008中有沒有辦法做到這一點?
謝謝
這是懶惰的方式,讓Sql Server給你結果。例如,假設您的原始查詢是這樣的:
SELECT DT.OrderDate, DT.OrderId, DT.CustomerName, DT.OrderValue,
GT.OrderId AS MaxOrderId, GT.CustomerName AS MaxCustomerName, GT.OrderValue AS MaxOrderValue
FROM
(SELECT OrderDate, OrderId, CustomerName, OrderValue
FROM OrderTable
WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo)) AS DT
INNER JOIN
(SELECT OrderDate, OrderId, CustomerName, OrderValue
FROM OrderTable AS OrderTable_1
WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo) AND (OrderId =
(SELECT TOP 1 OrderId
FROM OrderTable AS OrderTable_2
WHERE (OrderDate = OrderTable_1.OrderDate)
GROUP BY OrderId
ORDER BY SUM(OrderValue) DESC))) AS GT ON DT.OrderDate = GT.OrderDate
ORDER BY DT.OrderDate, DT.OrderValue DESC
DT =詳細信息表
:SELECT OrderDate, OrderId, CustomerName, OrderValue
FROM OrderTable
WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo)
與當天的分組結果,使他們出現在每一行加入該
GT =組別結果表
當天的最大值順序現在被添加到每一行,讓您可以輕鬆地將它包含在組標題中。顯然,如果客戶名稱來自不同的表格,則只需要在原始查詢和OrderTable_1查詢中加入該表格即可。
此查詢假定OrderDate字段是沒有時間分量的純日期字段。
有趣的想法克里斯,雖然不知道如果相關的子查詢是最佳的,因爲它多次評估相同的東西。 最後,我創建了3個CTE - 一個用於訂單,一個用於最大訂單價值,另一個用於最大訂單詳情(通過將訂單價值加入第二個CTE)。 最後,我在訂單日期加入了第一個和第三個CTE,以獲得與您相同的結果。 – Chris 2010-03-29 13:19:23
如果您發佈獲取基本結果集的查詢,我們可以幫助您更好。 – 2010-03-23 12:58:16