- 我有有两种类型(A和B)的订单列表。
- 每个帐户至少有一个A型订单。
- 每个类型的多个订单可以存在于一个账户中。
- 对于每一个客户,我需要知道该帐户的所有A类订单的最低order_date进行。
我应该在SQL,powerquery或powerpivot中执行此操作吗?
我宁愿在powerquery或powerpivot中计算它。 任何想法?如何返回每个帐户最小日期为特定订单类型
我应该在SQL,powerquery或powerpivot中执行此操作吗?
我宁愿在powerquery或powerpivot中计算它。 任何想法?如何返回每个帐户最小日期为特定订单类型
只会让你的表结构的一些基本假设。像这样的东西应该工作:
SELECT Account.Name, MIN(Order_date) FirstOrderDate
FROM Account LEFT OUTER JOIN Orders on Account.AccountId = Orders.OrderId
AND Orders.Type='A'
GROUP BY Account.Name
这是不是会返回整个表的最旧订单? –
oops。由 –
添加组应该做的窍门! –
SELECT *
FROM accounts,order
WHERE accounts.id = order.account_id and order.id in
(SELECT TOP 1 id FROM order
WHERE type = "A"
ORDER BY date);
假设:有一个[订购]之间和[帐户]表一对多的关系。
步骤:
表[在线订购]如下创建一个计算字段(未计算的列),
[Minimum Date] = min(Order[Order_Date])
下面是说明如何在电力枢纽创建计算字段链接。 Link-1Link-2
功率查询可以在没有任何自定义的SQL很容易做到这一点。
筛选器只是一个命令:右键单击类型列和 文本过滤>等于一个小区。
然后右键点击帐户ID和GROUP BY的最低订购日期:
一些硬编码的数据,以显示它的工作:
let
Source = Csv.Document("AccountID,Type,Order_Date
1,A,1/4/13
1,A,1/5/13
1,B,1/1/13
2,A,5/5/13"),
#"Promoted Headers" = Table.PromoteHeaders(Source),
TypedData = Table.TransformColumnTypes(#"Promoted Headers",{{"AccountID", Int64.Type}, {"Order_Date", type date}}),
#"Filtered Rows" = Table.SelectRows(TypedData, each [Type] = "A"),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"AccountID"}, {{"MinDate", each List.Min([Order_Date]), type date}})
in
#"Grouped Rows"
如果你的数据是在数据库中,我会用它,这将是非常简单的SQL。你可以发布一些代码吗?你有什么试过的? –