sql server-how min и max пустая строка, если они имеют одинаковый результат - PullRequest
0 голосов
/ 06 июня 2019

Я хочу объединить EmpID с EmployeeNo и объединить фамилию, имя и отчество из второй таблицы, и я хочу, чтобы записи отделяли O и I от min и max, но если у них нет minили max становится пустым или null Я просто хочу стать пустым для определенной строки, потому что если они не очищают строку, результат будет таким же.

-----------------------------------------------------

это 1-й

| Записи ............................... |recordDate .............................. | ..Empid .......... |Ссылка |
| ..0016930507201907: 35I .... | ..2019-05-07 00: 00: 00.000 ....... | ..001693 ......... |..1693 |
| ..0016930507201917: 06O. | ..2019-05-07 00: 00: 00.000 ........ | ..001693 ......... | ..1693 |
| ..0016930507201907: 35I ... | ..2019-05-08 00: 00: 00.000 ....... | ..001693 ......... |..1693 |
......................................... ... | ..2019-05-08 00: 00: 00.000 ....... |..001693 ........ | ..1693 |

----------------------------------------------------


2-я таблица

..... | LastName |......................... | FirstName |......... ........... | middleName |....................... | EmployeeNo |..... | Cruz | .................................. | Kimberly | ........................... | Castillo |................................ |001693 |


Я хочу объединить эти две таблицы со второй таблицей, объединяя фамилию, имя и отчество.employeeNo не присоединяется к Empid, но записи будут разделены между I и O с min или max определенного empId, но если записи не имеют I или O, они будут пустыми, как это, а также где


| name ..................................... | EmployeeNO | ............ RecordDate ............ | ... TimeIn ........... | TimeOut |
| CRUZ, MA.КИМБЕРЛИ, Калифорния .... | 001693 ........... | 2019-05-07 00: 00: 00.000 .. | ... 07:35 .............. | 05: 06 || CRUZ, MA.КИМБЕРЛИ, Калифорния .... | 001693 ........... | 2019-05-08 00: 00: 00.000 ... | ... 07:35 |


1 Ответ

0 голосов
/ 06 июня 2019

Вы можете попробовать это,

SELECT CONCAT(t2.[LastName], ', ', t2.[FirstName], ', ', t2.[MiddleName]) AS [Name],
    t2.[EmployeeNO], t1.[RecordDate], 
    MIN(IIF(ISNULL(CHARINDEX('I', t1.[Entries], 0), -1) > 0, SUBSTRING(t1.[Entries], LEN(t1.[Entries]) - 5, 6), NULL)) AS [TimeIn],
    MAX(IIF(ISNULL(CHARINDEX('O', t1.[Entries], 0), -1) > 0, SUBSTRING(t1.[Entries], LEN(t1.[Entries]) - 5, 6), NULL)) AS [TimeOut]
    FROM [dbo].[Table_2] t2
    RIGHT OUTER JOIN [dbo].[Table_1] t1 ON t2.[EmployeeNO] = t1.[Empid]
    GROUP BY CONCAT(t2.[LastName], ', ', t2.[FirstName], ', ', t2.[MiddleName]),
    t2.[EmployeeNO], t1.[recordDate]

* Примечание: согласно вашему вопросу

- [Таблица_1] - 1-ая таблица

- [Таблица_2] -2-й стол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...