0

到目前为止,我有一个带有几列的结果集(在临时表中)的查询,但我只关心四个。一个是客户 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 而不是查看原始表。但这应该返回相同的日期?

我是在正确的轨道上还是有什么遗漏?建议?更多信息??

4

1 回答 1

0

试试下面的查询: -

select * from #tempTable GROUP BY customer_id HAVING isnull(date_cd,"1900/01/01") =min(isnull(date_cd,"1900/01/01"))

于 2013-07-30T13:06:48.643 回答