2015-07-07 1 views
1

Долгосрочный наблюдатель, первый раз постер:Минимум (дата), возвращающиеся конфликтующие результаты - Таблица

В настоящее время я использую возможности SQL в Tableau. Я бы хотел, чтобы запрос возвращал userid (SQLCEC), дату посещения (SQL Date) и первый раз, когда пользователь когда-либо посещал (FirstAttendanceDate).

SELECT [Attendees$].[CEC] AS [SQLCEC] 

, [Attendees$].[Date] AS [SQL Date] 
, [Data2].[FirstAttendanceDate]  

FROM [Attendees$] 
INNER JOIN(SELECT [Attendees$].[Name] 
,     MIN([Attendees$].[Date])As [FirstAttendanceDate] 
        From [Attendees$] 
        Group By [Attendees$].[Name])AS [Data2] 
ON [Attendees$].[Name] = [Data2].[Name] 
WHERE [Attendees$].[CEC] IN ("jakyles","ajannett") 
ORDER BY [Attendees$].[CEC],[Attendees$].[Date] 

код возвращает следующие результаты:

SQLCEC SQL Date   FirstAttendanceDate 
ajannett 12/9/2014 0:00 12/9/2014 0:00 
ajannett 4/14/2015 0:00 12/9/2014 0:00 
ajannett 6/23/2015 0:00 12/9/2014 0:00 
jakyles 12/9/2014 0:00 12/9/2014 0:00 
jakyles 5/12/2015 0:00 12/9/2014 0:00 
jakyles 6/23/2015 0:00 6/23/2015 0:00 

Я пытаюсь выяснить, почему моя колонка FirstAttendanceDate возвращается «6/23/2015» для jackyles пользователей (это не то, что я хотите), в то время как пользователь ajannett возвращает желаемые результаты. Я довольно новый пользователь SQL. Я что-то пропустил? Спасибо вам за помощь!

+0

Если вы запускаете только внутренний SQL самостоятельно, вы видите только две записи? Или вы видите три? –

+0

Не могли бы вы предоставить свои тестовые данные для всех таблиц? – slartidan

ответ

0

Мое предположение, не видя исходных таблиц, связано с содержимым столбца Name, а не с столбцом CEC. Я подозреваю, что если вы добавите столбец Name в ваш результирующий набор, содержимое этого столбца для двух последних строк будет отличаться для столбца имен, даже если они одинаковы для столбца SQLCEC.

Мое единственное предложение было бы изменить ссылки в запросе от имени ЦИК:

SELECT [Attendees$].[CEC] AS [SQLCEC] 
, [Attendees$].[Date] AS [SQL Date] 
, [Data2].[FirstAttendanceDate]  

FROM [Attendees$] 
INNER JOIN(SELECT [Attendees$].[CEC] 
,     MIN([Attendees$].[Date])As [FirstAttendanceDate] 
        From [Attendees$] 
        Group By [Attendees$].[CEC])AS [Data2] 
ON [Attendees$].[CEC] = [Data2].[CEC] 
WHERE [Attendees$].[CEC] IN ("jakyles","ajannett") 
ORDER BY [Attendees$].[CEC],[Attendees$].[Date] 
+0

Благодарим вас за понимание Брайана. Вы абсолютно правы. При дальнейшем расследовании выясняется, что, несмотря на то, что у человека есть уникальный идентификатор пользователя, их имя было написано по-разному. – jkuan87

0

Я был в состоянии понять это.

SELECT [Attendees$].[CEC] AS [SQLCEC] 

, [Attendees$].[Date] AS [SQL Date] 
, [Data2].[FirstAttendanceDate]  

FROM [Attendees$] 
INNER JOIN(SELECT [Attendees$].[CEC] 
,     MIN([Attendees$].[Date])As [FirstAttendanceDate] 
        From [Attendees$] 
        Group By [Attendees$].[CEC])AS [Data2] 
ON [Attendees$].[CEC] = [Data2].[CEC] 
WHERE [Attendees$].[CEC] IN ("jakyles","ajannett") 
ORDER BY [Attendees$].[CEC],[Attendees$].[Date] 

Я присоединился к имени, а не к ЦИК.

+0

FYI. Вы можете получить тот же эффект в Tableau (начиная с версии 9), используя вычисления уровня детализации вместо пользовательского SQL. –

+0

@AlexBlakemore, извините за поздний ответ. Да, в самом деле! Хотелось бы, чтобы я прочитал ваше сообщение намного раньше. Это сэкономило бы много времени. – jkuan87