EDYCJA: Przeformułuj całe pytanie. Za pierwszym razem przyszło to źle.T-SQL CASE Sprawdź najmłodszą datę, a następnie w porównaniu z innymi wartościami
W Wyniki powinno być tak:
MachineName | OrderNo | TaskID | Code | NettoProd | BrutoProd | DiffProd
=========================================================================
F1 123456 101 O 100000 125000 25000
F1 123456 102 P8 1000000 1250000 250000
F1 123456 103 P1 10000 12500 2500
F1 123456 104 P4 100000 125000 25000
The JobSummary
ma następujące kolumny:
StartDate
TaskID
Route
ma następujące kolumny:
OrderNo
TaskID
Resource
przechowuje dane o maszynach
MachineID
już dodanych część Kyle Gobel, która była prawidłowa odpowiedź, gdybym pod warunkiem, wszystkie szczegóły w pierwszej kolejności.
Co chciałbym osiągnąć to, aby pokazać O
kiedy to pierwszy taskID
zadań związanych z jednym OrderNo
oparciu o StartDate
, który jest DateTime
pola w tabeli.
Jeśli niemożliwe jest sprawdzenie obu Route.No
i JobSummary.StarDate
w jednym oświadczeniu CASE
, to osobna kolumna dla obu również.
Zapytanie
SELECT Resource.DESCRIPTION AS MachineName
,Route.OrderNo
,Route.TaskID
,CASE
WHEN JobSummary.StartDate = (SELECT MIN(cr.StartDate) FROM JobSummary cr) THEN 'O'
WHEN Route.No = 1 OR Route.No = 2 THEN 'P1'
WHEN Route.No = 4 THEN 'P4'
WHEN Route.No >= 8 THEN 'P8'
ELSE '*FP*'
END AS Code
,JobSummary.GoodProd As NettoProd
,JobSummary.GoodProd + JobSummary.SetupProd + JobSummary.WasteProd As BrutoProd
,(JobSummary.SetupProd + JobSummary.WasteProd) As DiffProd
FROM Route
JOIN Resource ON Resource.MachineID = Route.MachineID
JOIN JobSummary ON JobSummary.TaskID = Route.TaskID AND JobSummary.MachineID = Route.MachineID
Jeśli możesz podać nam zapytanie, co nie działa, a oczekiwane wyniki, prawdopodobnie uzyskasz dobrą odpowiedź. –
Nie widzę odniesienia do StartDate lub kodu "O" w powyższym przykładzie; czy możesz opublikować pełniejszy przykład tego, co próbujesz zrobić? –