如何根据内容对客户的订单进行分类

时间:2019-07-24 15:58:21

标签: sql powerbi dax

我有一张订单行表,例如

FactoryBot.define do
  factory :scooties_coupon do
    coupon { "43MDA" }
    redeemed { false }

      trait :redeemed do
        redeemed { true }
      end
  end

end

...并且我想将其汇总并在“订单ID”级别对其进行分类,所以...

(Order ID, Product ID, Qty, Product Type)   

(Order1 , SKU123 , 1 , Pen)

(Order2 , SKU234 , 1 , Pencil)

(Order3 , SKU123 , 2 , Pen)

(Order3 , SKU234 , 2 , Pencil)

是否有一种优雅的方法来获得此结果?可能有多达25种产品类型。

使用SQL,DAX或本机Power BI解决方案。

3 个答案:

答案 0 :(得分:0)

对于此示例,您可以使用聚合和case表达式:

select orderid,
       (case when min(producttype) = max(producttype) then concat(min(producttype), ' Order')
             else 'Mixed Order'
        end) as order_type
from orderlines ol
group by orderid;

答案 1 :(得分:0)

您可以按订单分组并计算不同产品类型的数量。如果产品类型超过一种,则可以显示“混合订单”

select 
    OrderID, 
    (Case 
        when Count(distinct ProductID) > 1 then 'Mixed Order' 
        else min(ProductType) + ' Order' 
    End) AS OrderType
from OrderDetails
group by OrderID

答案 2 :(得分:0)

在DAX中,

SUMMARIZE (
    Orders,
    Orders[Order ID],
    "Order Type", SELECTEDVALUE ( Orders[Product Type], "Mixed" ) & " order"
)

如果有一个,SELECTEDVALUE function返回Product Type,否则返回“混合”结果。