Я хочу, чтобы запрос подсчитал повторяющиеся записи из 3 отдельных столбцов в таблице бу с тем же типом данных (C #) - PullRequest
0 голосов
/ 26 октября 2011

У меня возникла синтаксическая ошибка со следующим оператором sql, дело в том, что я хочу подсчитать дубликаты в трех разных столбцах таблицы.Я использую Visual Studio 2010 и поставщик данных .NET Framework для OLE DB

. Этот запрос будет возвращать все записи в одном наборе записей

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 голосов
/ 26 октября 2011

Удалите ВСЕ из «СОЮЗА ВСЕ».

ОБНОВЛЕНИЕ: извините, я неправильно прочитал.Вы действительно хотите выбрать дубликаты.Или записи, для которых существует дубликат.

0 голосов
/ 26 октября 2011

Попробуйте это:

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
0 голосов
/ 26 октября 2011

Вам необходимо определить набор результатов для дополнительного выбора, здесь я определил как результаты.

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
0 голосов
/ 26 октября 2011

Попробуйте изменить SELECT NO_IDENT_3 FROM P240538 на это:

SELECT NO_IDENT_3 AS NO_IDENT_2 FROM P240538

...