MODIFICA: Rifare l'intera domanda. Lo portò nel modo sbagliato la prima volta.CAS-T-SQL Controllare la data più recente e poi gli altri valori
I Risultati dovrebbero essere come:
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
Il JobSummary
ha le seguenti colonne:
StartDate
TaskID
Il Route
ha le seguenti colonne:
OrderNo
TaskID
Il Resource
contiene i dati sulle macchine
MachineID
ho già aggiunto la parte di Kyle Gobel, che era la risposta corretta, se avessi fornito tutti i dettagli, in primo luogo.
Quello che vorrei realizzare è quello di mostrare un O
quando è la prima taskID
dei compiti connessi ad uno OrderNo
basato sul StartDate
, che è un campo DateTime
nella tabella.
Se è impossibile controllare sia Route.No
e JobSummary.StarDate
in una CASE
dichiarazione, poi una colonna separata per entrambi farà troppo.
Query
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
Se potessi darci la domanda, cosa non funziona e i risultati attesi, molto probabilmente otterresti una buona risposta. –
Non vedo alcun riferimento a StartDate o al codice 'O' nell'esempio sopra; puoi pubblicare un esempio più completo di ciò che stai cercando di fare? –