Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:使用differents子句获取列表两次,其中_Sql_Sql Server_Tsql_Where Clause - Fatal编程技术网

SQL:使用differents子句获取列表两次,其中

SQL:使用differents子句获取列表两次,其中,sql,sql-server,tsql,where-clause,Sql,Sql Server,Tsql,Where Clause,我尝试使用不同的子句两次获取同一表中的同一列: 我的问题是: SELECT * FROM (SELECT TOP 10 CONVERT(DATE, attemptdate) AS Date, Max(currentcount) AS A FROM logintracking INNER JOIN maxuser ON logintracking.loginid = ma

我尝试使用不同的子句两次获取同一表中的同一列:

我的问题是:

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 
结果:

预期结果:


我的目标是两次获得同一列“maxcurrentcount”,并应用不同的where子句,以便获得两个名为A和B的列,并且我还需要在第一列中显示日期,您能提供帮助吗?谢谢

因为A和B之间的唯一区别是logintracking.clientaddr,所以您可以将该条件放在MAX函数的CASE语句中:

SELECT CONVERT(DATE, attemptdate) AS Date, 
    MAX(CASE WHEN logintracking.clientaddr IN ( '10.118.254.21', '10.118.254.156' ) THEN currentcount END) AS A,
    MAX(CASE WHEN logintracking.clientaddr IN ( '10.118.254.35' ) THEN currentcount END) 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
GROUP BY CONVERT(DATE, attemptdate) 
ORDER BY CONVERT(DATE, attemptdate) ASC

MySQL或Microsoft SQL Server?Microsoft SQL Server是否希望此maxcurrentcount为A、maxcurrentcount为B或此maxcase当foo=bar时,则currentcount结束为A、maxcase当bar=foo时,则currentcount结束为B?听起来像是在寻找自联接-如果向下滚动一点,此链接有一个示例:我想要第二个选择,像maxcurrentcount这样的东西,当。。。当。。。