Microsoft Access Query, сопоставление значений между столбцами - PullRequest
0 голосов
/ 16 марта 2019

Я относительно новичок в Access SQL. Я пробовал код, используя ресурсы онлайн, но он показывает ошибку каждый раз, когда я пытался запустить.

Я изначально создал приложение в Excel, это Лист 1

Job   Starting Date     Operation              Finish Date   Run Quality 
1     2/3/2019              abc                  5/3/2019          3
1     2/3/2019              bdc                  5/3/2019          3
1     2/3/2019              adc                  5/3/2019          3
1     2/3/2019              edc                  5/3/2019          3
2     3/3/2019              abc                  7/3/2019          4
2     3/3/2019              edc                  7/3/2019          4
2     3/3/2019              adc                  7/3/2019          4

Я хотел создать похожий на этот

Job   Starting Date abc     bdc        adc   edc    Run Quality     Finish Date
1     2/3/2019      Done    Done       Done  Done    3                5/3/2019
2     3/3/2019      Done    Progress   Done  Done    4                7/3/2019

Я изначально начал с нескольких полей

Job abc bdc adc edc  Run Quality 
1   abc bdc adc edc     3
2   abc -   adc edc     4

Код:

SELECT *
FROM 
(
SELECT Job,Operation,Run Quality FROM [OperationTable]
)SRC
PIVOT
(
SUM(Run Quality)
FOR Job IN ([abc],[bdc],[adc],[edc])
)PIV
ORDER BY Job

Изображение Excel Input Table & Required Output Если кто-нибудь выскажет свое ценное мнение, это будет очень полезно.

1 Ответ

1 голос
/ 16 марта 2019

Так, если поле в CROSSTAB возвращает Null, покажите «Progress», иначе «Done». Рассмотрим:

Query1:

TRANSFORM First(Table1.Operation) AS FirstOfOperation
SELECT Table1.Job, Table1.StartingDate, Table1.FinishDate, Table1.RunQuality
FROM Table1
GROUP BY Table1.Job, Table1.StartingDate, Table1.FinishDate, Table1.RunQuality
PIVOT Table1.Operation In ("abc","bdc","adc","edc");

Query2:

SELECT Job, StartingDate, FinishDate, RunQuality,
IIf([abc] Is Null,"Progress","Done") AS abcStatus, 
IIf([adc] Is Null,"Progress","Done") AS adcStatus, 
IIf([bdc] Is Null,"Progress","Done") AS bdcStatus, 
IIf([edc] Is Null,"Progress","Done") AS edcStatus
FROM Query1;
...