到目前为止,我有一个带有几列的结果集(在临时表中)的查询,但我只关心四个。一个是客户 ID(varchar),一个是 Date (smalldatetime),一个是 Amount(money),最后一个是 Type(char)。我有多个具有相同客户 ID 的行,并希望根据日期、金额和类型对它们进行评估。例如:
Customer ID Date Amount Type
A 1-1-10 200 blue
A 1-1-10 400 green
A 1-2-10 400 green
B 1-11-10 100 blue
B 1-11-10 100 red
对于所有出现的 AI,都希望比较它们以仅识别一个,首先按最早日期,然后按最大数量,然后如果仍然通过比较类型来确定。然后我会为每个客户返回一行。
我会提供一些查询,但在花了两天时间试图获得正确的结果后,我现在在家。它看起来像这样:
(query to populate #tempTable)
GROUP BY customer_id
HAVING date_cd =
(SELECT MIN(date_cd)
FROM order_table ot
WHERE ot.customerID = #tempTable.customerID
)
OR date_cd IS NULL
我假设 HAVING 会导致每个 customer_id 只产生一行。最终并非如此,因为那里有一些联系。
我不确定我是否可以做 OR - 这里有一些 NULL 值 - 如果它们都相同,它并没有考虑到下一个比较的步骤。我没有看到避免使用某种 IF 或 WHERE 循环对临时表进行某些行处理的方法。
在我写作时,我在想也许我在 HAVING 子句中使用 #tempTable.date_cd 而不是查看原始表。但这应该返回相同的日期?
我是在正确的轨道上还是有什么遗漏?建议?更多信息??