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 server HAVING子句中count()=1的TSQL limit记录_Sql Server_Tsql - Fatal编程技术网

Sql server HAVING子句中count()=1的TSQL limit记录

Sql server HAVING子句中count()=1的TSQL limit记录,sql-server,tsql,Sql Server,Tsql,好的,我有3个表,它们在指定的键上链接 account (accountnumber) package (packageid, accountnumber) hostdomain (packageid) 我需要得到所有帐户,只有一个域,这里是我的查询到目前为止,但它是返回所有域。我做错了什么 select domainname, resellerAccountNumber, a.accountnumber, companyname, firstname

好的,我有3个表,它们在指定的键上链接

account (accountnumber)
package (packageid, accountnumber)
hostdomain (packageid)
我需要得到所有帐户,只有一个域,这里是我的查询到目前为止,但它是返回所有域。我做错了什么

select 
    domainname,
    resellerAccountNumber,
    a.accountnumber,
    companyname,
    firstname,
    lastname,
    primaryemail,
    HomePhone
    workphone
FROM account a 
INNER JOIN Package p on p.AccountNumber = a.AccountNumber
INNER JOIN hostdomain hd ON HD.packageId = p.packageID 
GROUP BY 
    domainname, reselleraccountnumber, a.accountnumber, companyname, 
    firstname,lastname,primaryemail, HomePhone,workphone, domainaliasId   
HAVING COUNT(domainname) =1 
    AND domainAliasID = 0 
    AND ResellerAccountNumber in ('','LNC','CFMXHOSTING')

在HAVING子句中仅使用聚合:

WHERE
    domainAliasID = 0 
    AND ResellerAccountNumber in ('','LNC','CFMXHOSTING')
GROUP BY
    domainname, reselleraccountnumber, a.accountnumber,
    companyname,firstname,lastname,primaryemail, HomePhone,
    workphone, domainaliasId   
HAVING COUNT(domainname) = 1 

您正在按太多字段进行聚合。我想你想要这样的东西:

select min(domainname) as domainname, resellerAccountNumber,
       a.accountnumber, companyname, firstname, lastname, primaryemail,
       HomePhone, workphone
FROM account a INNER JOIN
     Package p
     on p.AccountNumber = a.AccountNumber INNER JOIN
     hostdomain hd ON HD.packageId = p.packageID 
GROUP BY reselleraccountnumber, a.accountnumber, companyname, firstname,
         lastname, primaryemail, HomePhone, workphone, domainaliasId   
HAVING COUNT(domainname) = 1 AND
       domainAliasID = 0 AND
       ResellerAccountNumber in ('','LNC','CFMXHOSTING');

我通过从
组中删除了
域名
(并进行了相关更改)。我不知道如何处理
domainaliasid
,因为您的问题没有提到任何关于过滤数据的内容,只是将其聚合。您可能希望删除它以获得所需的内容。

是否应该
和domainAliasID=0以及('''LNC','CFMXHOSTING')中的RebelerAccountNumber
不在where子句中,而不是在have中?