2

Table1 と Table 2 の 2 つのテーブルがあります。一部の列は両方で同じです。table2 の列にエントリがあるかどうかに応じてデータを取得したいと思います。つまり、データに両方のテーブルの列の 1 つのエントリがある場合、テーブル 1 でない場合は table2 からデータを取得したいと思います。

以下は、テーブル構造の例です。

表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        

この例では、ticketId2020 は Table2 にエントリがあります。Priorityしたがって、表 2 からandを取得したいと思いますticket_description 。しかし、TicketIds 2010 と 2030 は表 2 にエントリがないため、表 1 から列を取得したいと思いPriorityますticket_description

これどうやってするの?

4

2 に答える 2

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

ここでフィドル。

このソリューションは実際には、テーブル 2 で Priority と TIcket_description が null ではないことを前提としていることに注意してください。null の場合は、table1 のフィールドが使用されます。

于 2013-09-05T05:23:09.530 に答える
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があります

于 2013-09-05T05:25:30.997 に答える