我有两个表,Table1和Table 2.两个列中的列相同。我想根据table2中的列是否有条目来提取数据。我的意思是,如果一个数据在两个表中都有一个列的条目,那么我想从table2中提取数据(如果不是表1)。
以下是表结构的示例。
表1:Ticket_details
TIcketID| SubmittedBy|Priority| Ticket_description|current_status
2010 1000 High blah...blah current_assigned
2020 1000 Normal gggggggggg current_assigned
2030 1100 Low hhhhhhhhhhhh current_description
表2:TICKET_EDIT_DETAILS
TIcketID| Priority| Ticket_description|
2020 Low gggggggggghhhh
在此示例中,ticketId
2020在表2中有一个条目。所以我想从表2中提取Priority
和ticket_description
但是TicketIds 2010和2030在表2中没有条目,所以我想提取列Priority
和{{1从表1开始。
我该怎么做?
答案 0 :(得分:3)
我想这就是你要找的东西:
SELECT t1.ticketId, t1.submittedBy,
COALESCE(t2.priority, t1.priority),
COALESCE(t2.ticket_description, t1.ticket_description),
t1.current_status
FROM table1 t1
LEFT JOIN table2 t2 ON t1.ticketId = t2.ticketId
小提琴here。
请记住,此解决方案实际上假设在table2上Priority和TIcket_description不为null。如果它们为null,那么将使用table1中的那些字段。
答案 1 :(得分:3)
试试这个。我想,它给你想要的东西。
SELECT
td.[TIcketID],
td.[SubmittedBy],
(CASE WHEN ted.[Priority] IS NOT NULL THEN ted.[Priority] ELSE td.[Priority] END)AS [priority],
(CASE WHEN ted.[Ticket_description] IS NOT NULL THEN ted.[Ticket_description] ELSE td.[Ticket_description] END)AS [Ticket_description],
td.[current_status]
FROM Ticket_details td
LEFT OUTER JOIN TICKET_EDIT_DETAILS ted ON td.[TIcketID]=ted.[TIcketID]
以下是SQLFiddle