在ot_notes
表中,每项工作都有不同的任务。这个特定的工作有20行。我需要找到'Weld_Complete',如果它不存在我正在寻找'Weld_Start'。这段代码也按照我想要的方式工作,但我还需要返回作业号,这样我就可以将它链接到另一个查询。我怎么做?
提前致谢。
SELECT
CASE
WHEN EXISTS (SELECT 1 FROM ot_notes)
THEN (SELECT task
FROM ot_notes
WHERE job = '61249' AND task = 'Weld_Complete')
ELSE
CASE
WHEN EXISTS (SELECT 1 FROM ot_notes)
THEN (SELECT task
FROM ot_notes
WHERE job = '61249' AND task = 'Weld_Start')
ELSE ' '
END
END AS weld
以下查询为我提供了作业61249的所有任务:SELECT作业,来自ot_notes WHere job ='61249'的任务。这对每项工作都不同。我需要找到Weld_Complete,如果不存在,我需要寻找Weld_Start,或者找不到它。我需要他的工作和任务领域。上面的查询给了我想要的东西,除了工作。
job task
----- -----------
61249 Update_Date
61249 Weld_Start
61249 Paint_Start
61249 Note
61249 Note
61249 Note
61249 Ship_Complete
61249 Update_Date
61249 Note
61249 Note
61249 Note
61249 Paint_Complete
61249 Weld_Complete
61249 Note
61249 Note
61249 Ship_Partial
61249 Update_Date
61249 Note
61249 Note
61249 Note
答案 0 :(得分:0)
如果您只想要(No column name)
4
优先于'Weld_Complete'
的一行,那么您可以使用'Weld_Start'
和ORDER BY
:
LIMIT
答案 1 :(得分:0)
如果您希望获得任务值为“Weld_Complete”或“Weld_Start”(根据其优先级)的所有作业,则可以使用此查询。
;WITH tasks
AS (
SELECT * FROM
(VALUES(1,'Weld_Complete'), (2,'Weld_Start')) tasks (priorty, task)
)
, CTE AS (
select
n.*
from ot_notes n
inner join tasks t on n.task = t.task
)
SELECT * FROM CTE