作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 tblorder
的主表。
它包含我关心的CUID
(Customer ID)、CuName
(Customer Name)和OrDate
(Order Date)。它目前按 date
升序排列(例如 2002 年之前的 2001)。
目标:
尝试检索最近 100 万个 DISTINCT 客户的 CUID
和 CuName
S,并将它们Insert
到 Tempdb
(# Recent1M) 供以后加入使用。
所以我:
需要按 desc
排序以翻转日期以检索最近的 100 万客户
只需要前 100 万个 DISTINCT 客户信息(CUID
, CuName
)
我知道下面的代码不正确,但这是主要思想。我只是想不出正确的语法。到目前为止,我将 While
循环与 Select
Into
作为最合理的解决方案。
SQL 平台:SSMS
Declare @DC integer
Set @DC = Count(distinct(CUID)) from #Recent1M))
While (@DC <1000000)
Begin
Select CuID,CuName into #Recent1MCus from tblorder
End
非常感谢,感谢您的帮助!
最佳答案
TOP 1000000 是可行的方法,但您将需要一个 ORDER BY 子句,否则您将得到任意结果。在你的情况下,你提到你想要最新的,所以:
ORDER BY OrderDate DESC
此外,您可以考虑使用 GROUP BY 而不是 DISTINCT。我认为它看起来更简洁,并使选择列表保持为选择列表,因此您可以选择包括您可能想要的任何其他内容(正如我冒昧地做的那样)。请注意,由于分组,ORDER BY 现在使用 MAX(ordate),因为客户可能有多个 ordate,而我们对最新的感兴趣。所以:
select top 1000000 cuid, cuname, sum(order_value) as ca_ching, count(distinct(order_id)) as order_count
into #Recent1MCus
from tblorder
group by cuid, cuname
order by max(ordate) desc
希望对您有所帮助。
关于mysql - 如何将数据插入 Tempdb 直到满足不同值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48351458/
我是一名优秀的程序员,十分优秀!