Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 在另一个字段列上选择带有distinct的ties的Top 1_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 在另一个字段列上选择带有distinct的ties的Top 1

Sql 在另一个字段列上选择带有distinct的ties的Top 1,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有这样一个示例表记录: AutoID ReceiptNo Outlet_Code -------------------------------- 1 SUN12 Store X 3 SUN12 Store X 4 ART123 Store y 我想根据门店编号选择一个前1名的领带,在收货处有不同的号码,这样在这种情况下,我的结果将是: 门店X/门店Y 因为我应该

我有这样一个示例表记录:

AutoID  ReceiptNo  Outlet_Code  
-------------------------------- 
    1       SUN12        Store X     
    3       SUN12        Store X     
    4       ART123       Store y
我想根据门店编号选择一个前1名的领带,在收货处有不同的号码,这样在这种情况下,我的结果将是:

门店X/门店Y

因为我应该将2个Store X记录读取为1,因为它们具有相同的receiptNo

这是我查询的一部分:

SELECT TOP 1 WITH TIES (Outlet_Code)                  
From [Trans] T                 
WHERE T.CardNo IN (Select [CardNo] From [Card]                
                         Where  [MemberID] = 
                         (Select [ID] From [Member]  Where [autoid] = @MemAutoID ))   
GROUP BY Outlet_Code     
ORDER BY Count(T.Outlet_Code) Desc 

我不知道我是否理解正确,但是使用
DISTINCT
怎么样

SELECT DISTINCT Outlet_Code FROM tableName

EWW。。。子查询。。。这对你有用吗

SELECT DISTINCT T.Outlet_Code  
FROM [Trans] T, [Card] C, [Member] M
WHERE T.CardNo = C.CardNo
AND C.MemberID = M.ID
AND M.autoid = @MemAutoID
ORDER BY Count(T.Outlet_Code) Desc 
或者是不那么懒惰的方式

SELECT DISTINCT T.Outlet_Code  
FROM [Trans] AS T
JOIN  [Card] AS C ON (T.CardNo = C.CardNo)
JOIN [Member] AS M ON (C.MemberID = M.ID)
WHERE M.autoid = @MemAutoID
ORDER BY Count(T.Outlet_Code) Desc 

您的GROUPBY子句是正确的,但在ORDERBY子句中必须使用不同的列值ReceiptNo

SELECT TOP 1 WITH TIES Outlet_Code                  
FROM [Trans] T                 
WHERE T.CardNo IN (
                   SELECT c.[CardNo]
                   FROM [Card] c JOIN [Member] m ON c.[MemberID] = m.ID                
                   WHERE m.[autoid] = @MemAutoID                   
                   )
GROUP BY T.Outlet_Code     
ORDER BY COUNT(DISTINCT T.ReceiptNo) DESC

演示

请参见:您已有的查询有什么问题?它是否给出了错误的结果?它是否给出错误消息?EWW。。。从1987年开始?强烈建议坚持正确的
内部联接
语法。