【问题标题】:Distinct not working in select database from another server在另一台服务器的选择数据库中不同的工作
【发布时间】:2018-03-09 20:49:42
【问题描述】:

我在这里有这个选择:

SELECT * FROM (
    SELECT DISTINCT cod_arq, 
           (SELECT description FROM [serverTwo].[perg].dbo.marc_section WHERE paragraph = 10 AND cod_arq = AC.cod_arq) AS author,
           (SELECT description FROM [serverTwo].[perg].dbo.marc_section WHERE paragraph = 24 AND cod_arq = AC.cod_arq) AS title,
           (SELECT description FROM [serverTwo].[perg].dbo.marc_section WHERE paragraph = 25 AND cod_arq = AC.cod_arq) AS edt
    FROM [serverTwo].[pergamarc].dbo.marc_section AC
) AS ACN
WHERE ACN.author IS NOT NULL 
    AND ACN.title IS NOT NULL

我测试了一些从 serverOne 到 serverTwo 的 sql,没关系,我可以从一台服务器调用它们到另一台服务器。 但是,如果我在“serverTwo”上运行它,上面的这个 sql 就可以正常工作(意味着 sintaxe 是正确的),但如果我从 serverOne 运行它就不行。但是,如果我删除 DISTINCT 关键字,它就可以工作(显示重复的行,但可以)。

这个 DISTINCT 会发生什么?也许是一些 COLLATE 冲突?

【问题讨论】:

    标签: sql sql-server tsql distinct


    【解决方案1】:

    我认为您只需要条件聚合:

    SELECT acn.*
    FROM (SELECT ac.cod_arq, 
               MAX(CASE WHEN paragraph = 10 THEN description END) as author,
               MAX(CASE WHEN paragraph = 24 THEN description END) as title,
               MAX(CASE WHEN paragraph = 25 THEN description END) as edt
          FROM [serverTwo].[pergamarc].dbo.marc_section AC
          GROUP BY ac.cod_arq
         ) AS ACN
    WHERE ACN.author IS NOT NULL AND ACN.title IS NOT NULL;
    

    子查询不是绝对必要的。您可以改用HAVING 子句。

    【讨论】:

    • 我工作了!!但是为什么当我在“serverTwo”上运行它时它没有 group by 工作?
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多