2013-06-03 14 views
5

Vui lòng tha thứ cho tiêu đề mơ hồ của câu hỏi này. Có lẽ bên dưới sẽ hỏi câu hỏi của tôi tốt hơn.Trình tạo báo cáo SQL: nhận giá trị từ nhóm trong tablix

Xem xét bảng dưới đây tổng hợp:

Fruit Units FruitSales% 
----- ----- ----------- 
Apples  10    ? 
Oranges 20    ? 
Bananas 10    ? 
NonFruit 10    ? 

TOTAL  50    ? 

Tôi cần cột FruitSales% là: Fruit/(Total - NonFruit)

Nếu NonFruit là một tên sản phẩm của riêng mình, làm thế nào để tôi nhận được giá trị của nó để sử dụng trong khác tính toán trong tablix?

Tôi tưởng tượng thức của tôi để các FruitSales% là cái gì đó như:

Sum(Fields!Units.Value)/(ReportItems!txtTotalUnits.Value - SumIf(Fields!Fruit = "NonFruit", Fields!Units.Value) 

Tuy nhiên, SUMIF không tồn tại và thậm chí nếu nó đã làm, nó sẽ được cụ thể cho hàng hiện tại.

Và khi tôi ở đây, ReportItems!txtTotalUnits.Value, tôi rõ ràng đã đặt tên cho hộp văn bản đó, nhưng có cách nào sạch hơn để tham chiếu không?

Trả lời

3

Nói DataSet cơ bản (mà tôi đã gọi FruitDataSet) trông như thế này:

enter image description here

tôi đã tạo ra một báo cáo đơn giản dựa trên dữ liệu này:

enter image description here

Số Bán hàng hoa quả% biểu thức là:

=Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0)) 
/Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0), "FruitDataSet") 

Điều này cho phép những gì tôi nghĩ là kết quả chính xác:

enter image description here

Có hai điều cần lưu ý về các biểu hiện:

  1. Bằng cách chạy các Sum chống lại một biểu IIf , bạn có thể kiểm soát những gì được bao gồm trong tổng số - ở đây tôi đang thiết lập NonFruit một cách rõ ràng để .

  2. Bằng cách đặt các Phạm vi của biểu thức tổng hợp, bạn có thể nhận được tổng số tổng thể sử dụng để làm việc ra tổng tỷ lệ phần trăm - trong báo cáo tôi nhận được tổng cộng sử dụng FruitDataSet và so sánh này vào nhóm cấp tổng để nhận giá trị%.

Cách bạn tham chiếu tổng số hộp văn bản là tốt; tùy chọn duy nhất khác sẽ là sử dụng biểu thức mỗi khi bạn muốn tổng số - nếu điều này nằm ngoài Tablix, bạn sẽ cần đặt rõ Phạm vi, ví dụ: DataSet.

+1

Cảm ơn bạn rất nhiều Ian, đó là hoàn hảo và giải thích rất tốt. Tôi thực sự đánh giá cao thời gian bạn dành cho việc này! – Warren