PJZ*_*PJZ 2 sql t-sql sql-server
我一直在网站上查看其他T-SQL问题,包括DISTINCT和MAX几个小时,但找不到任何符合我需要的东西.这是我的数据集和查询目标的描述.任何指导都非常感谢.
数据 集数据集是上一个结算周期中的客户,客户站点,日期和值的列表,包含以下列.单个客户可以拥有多个站点:
客户,网站,日期,计数器,CounterValue,CollectorNode
查询要求 对于给定的结算周期,我想选择以下内容
我的挑战是我无法返回所有列,同时为每个列选择DISTINCT列和MAX.我的多次尝试会为每个客户/网站组合返回多条记录.
SELECT ds.customer,
ds.site,
ds.counter,
ds.countervalue,
ds.collectornode
FROM DATASET ds
JOIN (SELECT t.customer,
t.site,
MAX(t.countervalue) AS max_countervalue
FROM DATASET t
GROUP BY t.customer, t.site) x ON x.customer = ds.customer
AND x.site = ds.site
AND x.max_countervalue = ds.countervalue
Run Code Online (Sandbox Code Playgroud)
WITH example AS (
SELECT ds.customer,
ds.site,
ds.counter,
ds.countervalue,
ds.collectornode,
ROW_NUMBER() OVER(PARTITION BY ds.customer, ds.site
ORDER BY ds.countervalue DESC) AS rank
FROM DATASET ds)
SELECT e.customer,
e.site,
e.counter,
e.countervalue,
e.collectornode
FROM example e
WHERE e.rank = 1
Run Code Online (Sandbox Code Playgroud)