我一直试图低估编写 MS SQL 2005 查询的最佳方法,该查询几乎可以执行以下操作...
select distinct col1, col2, col3
from table1
基本上我想在 col1 上执行 Distinct,但我不想在 Col2/3 上执行 Dististinc,我只想要那里的值。
我知道不可能以这种方式编写查询,因为我认为我读到 Distinct 应用于行而不是 col?
谁能指出我正确的方向?我确实尝试将值重新加入,但这没有用,因为我必须在不同的选择中指定额外加入的列,这反过来又在这些上执行不同的,即。
select distinct t1.col1, t2.col2, t3.col3
from table1 t1
right join (select col1, col2, col3 from table1) t2
on t1.col1 = t2.col1
编辑以更好地解释..
select distinct t1.Hostname, t2.IP, t2.ActionDateTime, t2.Action
from tblUserActions t1
right join (select Hostname, IP, ActionDateTime from tblUserActions) t2
on t1.Hostname = t2.Hostname
基本上,这张表是数千个用户操作的列表,我试图在主机名上列出不同的列表,所以我应该只收到 10 行,因为这就是有多少不同的主机名。然后基于这些主机名,我还想将最近的记录数据加入到返回的行中,所以我想返回:
Hostname, IP, ActionDateTime, Action
1 Host1, 165.123.123.1, 2012-06-14 02:07:08, Logon
2 Host2, 165.123.123.2, 2012-06-14 03:07:08, Logoff
3 Host3, 165.123.123.3, 2012-06-14 04:07:08, Logon
4 Host4, 165.123.123.4, 2012-06-14 05:07:08, Logoff
etc...
任何帮助/指针都会很棒!干杯。