到目前为止,我有一个带有几个列的结果集(在临时表中)的查询,但我只关心四个列。一个是客户ID(varchar),一个是日期(小时间),一个是金额(货币),另一个是Type(char)。我有多个行,具有相同的custmer,并希望根据日期、数量和类型对它们进行评估。例如:
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 对于所有出现的A,我想比较它们只识别一个,首先在最早的日期,然后以最大的数量,如果仍然被比较类型所束缚。然后,我将为每个客户返回一行。
我会提供一些查询,但我现在在家,花了两天时间试图得到一个正确的结果。看起来是这样的:
(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我假设每个customer_id只会产生一行。结果并不是这样,因为那里有一些联系。
我不确定我能不能做OR --这里有一些值为空--如果它们都是相同的,它也没有考虑到下一个比较的步骤。我没有看到一种避免使用IF或WHERE循环对temp表进行行处理的方法。
在我写作的时候,我在想,也许我在HAVING子句中使用了#tempTable.date_cd,而不是查看原始表。但是应该返回相同的日期吗?
我是在正确的轨道上,还是缺少了什么东西?有什么建议吗?更多信息?
发布于 2013-07-30 13:06:48
尝试以下查询:-
通过具有isnull的customer_id (date_cd,"1900/01/01") =min(isnull(date_cd,"1900/01/01"))选择* from组
https://stackoverflow.com/questions/17900042
复制相似问题