我希望查询计算具有相同数据类型(C#)的表bu中3个单独列的重复条目

时间:2011-10-26 12:17:54

标签: sql count duplicates union

我遇到以下sql语句的语法错误 事情是我想在一个表中的3个不同列中重复计数。 我正在使用Visual Studio 2010和用于OLE DB的.NET Framework数据提供程序

此查询将返回一个记录集中的所有条目

string testqry = 
SELECT NO_IDENT_1 As NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
Union All 
SELECT NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
Union All 
SELECT NO_IDENT_3 As NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25});

但以下将发出语法错误信号

    string RqNbIdent10 =
"SELECT COUNT(*) as repeat 
from ( 
    SELECT NO_IDENT_1 As NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25})     
    Union All 
    SELECT NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
    Union All 
    SELECT NO_IDENT_3 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
    ) GROUP BY NO_IDENT_2"

4 个答案:

答案 0 :(得分:0)

尝试将SELECT NO_IDENT_3 FROM P240538更改为:

SELECT NO_IDENT_3 AS NO_IDENT_2 FROM P240538

答案 1 :(得分:0)

试试这个:

SELECT xx.No_Ident_2,COUNT(*) as repeat 
    from ( 
        SELECT NO_IDENT_1 As NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25})     
        Union All 
        SELECT NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
        Union All 
        SELECT NO_IDENT_3 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
        ) xx
        GROUP BY xx.NO_IDENT_2

答案 2 :(得分:0)

您需要识别子选择结果集,此处我已将其识别为结果。

SELECT results.NO_IDENT_2, COUNT(results.NO_IDENT_2) as repeat 
from ( 
    SELECT NO_IDENT_1 As NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25})     
    Union All 
    SELECT NO_IDENT_2 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
    Union All 
    SELECT NO_IDENT_3 FROM P240538 WHERE (P240538.DATE_dt > {2011/04/25}) 
    ) results GROUP BY results.NO_IDENT_2

答案 3 :(得分:0)

从“UNION ALL”中删除ALL。

更新:抱歉,我误读了。您实际上想要选择重复项。或者存在重复的记录。