Распределение заработной платы по квартальным запросам sql - PullRequest
0 голосов
/ 22 марта 2019

У меня есть таблица, которая выглядит так

    EmployeeID | Name | Check Date | Check Num | Check Amount | Quarter
    1          | Test | 01/21/2018 | 001231312 | 500          | 1
    1          | Test | 03/01/2018 | 001233210 | 100          | 1
    1          | Test | 05/01/2018 | 123213321 | 13           | 2
    1          | Test | 08/01/2018 | 321909900 | 321          | 3
    1          | Test | 12/01/2018 | 321000132 | 123          |4

мне нужно отобразить следующий вывод

EmployeeID | Name | 1st Quarter Date | 1st Quarter Check Num | 1st Quarter Check Amount | 2nd Quarter Date | 2nd Quarter Check Num | 2nd Quarter Check Amount | 3rd Quarter Date | 3rd Quarter Check Num | 3rd Quarter Check Amount | 4th Quarter Date | 4th Quarter Check Num | 4th Quarter Check Amount

Я исследовал это и нашел информацию об использовании Pivot, но было неясно, когда речь шла об отображении деталей вместо некоторой совокупности столбцов.

Спасибо

1 Ответ

2 голосов
/ 22 марта 2019

На мой взгляд, самый простой способ сделать это - использовать Datepart (QUARTER, Check Date) в сочетании с выпиской case.

Пример:

Select EmployeeID
   , Name
   , CASE WHEN Datepart(QUARTER, CheckDate) = 1 Then 'Check Date' END AS '1st Quarter Date'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 1 Then 'Check Num' END AS '1st Quarter Check Num'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 1 Then 'Check Amount' END AS '1st Quarter Check Amount'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 2 Then 'Check Date' END AS '2nd Quarter Date'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 2 Then 'Check Num' END AS '2nd Quarter Check Num'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 2 Then 'Check Amount' END AS '2nd Quarter Check Amount' 
   , CASE WHEN Datepart(QUARTER, CheckDate) = 3 Then 'Check Date' END AS '3rd Quarter Date'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 3 Then 'Check Num' END AS '3rd Quarter Check Num'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 3 Then 'Check Amount' END AS '3rd Quarter Check Amount' 
   , CASE WHEN Datepart(QUARTER, CheckDate) = 4 Then 'Check Date' END AS '4th Quarter Date'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 4 Then 'Check Num' END AS '4th Quarter Check Num'
   , CASE WHEN Datepart(QUARTER, CheckDate) = 4 Then 'Check Amount' END AS '4th Quarter Check Amount' 
From YourTableName

Я уверен, что тамэто более чистые способы сделать это, и я уверен, что другие будут вмешиваться. Кроме того, пожалуйста, не делайте, чтобы я не использовал те же имена столбцов в Datepart, я думаю, вам понадобится '' из-за пробела (Datepart (QUARTER, 'CheckДата ').

РЕДАКТИРОВАТЬ: OP добавил некоторые образцы данных, и поскольку имеется столбец' Quarter ', мы можем изменить оператор Case на:

CASE WHEN QUARTER = 1 Then ....
CASE WHEN QUARTER = 2 Then ....
CASE WHEN QUARTER = 3 Then ....
CASE WHEN QUARTER = 4 Then ....
...