【发布时间】:2018-09-04 14:43:07
【问题描述】:
我尝试使用不同的子句两次在同一个表中获取同一列:
我的查询:
SELECT
*
FROM
(SELECT TOP 10
CONVERT(DATE, attemptdate) AS Date,
Max(currentcount) AS A
FROM
logintracking
INNER JOIN
maxuser ON logintracking.loginid = maxuser.loginid
INNER JOIN
site ON site.siteid = maxuser.defsite
WHERE
attemptdate BETWEEN @dateDebut AND @dateFin
AND logintracking.clientaddr IN ('10.118.254.21', '10.118.254.156')
GROUP BY
CONVERT(DATE, attemptdate)
ORDER BY
CONVERT(DATE, attemptdate) ASC
) AS T1,
(SELECT TOP 10
CONVERT(DATE, attemptdate) AS Date,
MAX(currentcount) AS B
FROM
logintracking
INNER JOIN
maxuser ON logintracking.loginid = maxuser.loginid
INNER JOIN
site ON site.siteid = maxuser.defsite
WHERE
attemptdate BETWEEN @dateDebut AND @dateFin
AND logintracking.clientaddr = '10.118.254.35'
GROUP BY
CONVERT(DATE, attemptdate)
ORDER BY
CONVERT(DATE, attemptdate) ASC) AS T2
结果:
想要的结果:
我的目标是两次获得同一列“max(currentcount)”并应用不同的 where 子句,以便获得两个名为 (A & B) 的列,并且我还需要在第一列中显示日期,可以请你帮忙?谢谢
【问题讨论】:
-
MySQL 还是 Microsoft SQL Server?
-
Microsoft SQL Server
-
你想要这个
max(currentcount) as A, max(currentcount) as B还是这个max(case when foo=bar then currentcount end) as A, max(case when bar=foo then currentcount end) as B? -
听起来您正在寻找自加入 - 如果您向下滚动一下,此链接有一个示例:w3schools.com/sql/sql_join_self.asp
-
我想要第二个选择,比如 max(currentcount) as a when ... 和 max(currentcount) as b when ...
标签: sql sql-server tsql where-clause