【问题标题】:How to return results for a query using pivot or something similar如何使用数据透视或类似方法返回查询结果
【发布时间】:2012-01-14 14:16:28
【问题描述】:

我需要编写一个选择来生成以下内容:

   r_country | s_country |     s_name  |  r_name | msg    |   date
     ca        au            bill       bob      'hi'       2/12/2010

这是我的数据:

tableA

EmployeeName   |  EmployeeID  | country
bill              1                au
bob               2                ca


tableB

Sender       |  Reciever  |  Msg | date
bill               bob       'hi'   12/12/2010

之前我尝试过加入,但我认为这只会返回我加入的用户的数据

【问题讨论】:

    标签: sql sql-server-2005 sql-server-2008 pivot


    【解决方案1】:

    您需要加入两次。

    SELECT
      receiver.country    AS r_country,
      sender.country      AS s_country,
      data.Sender         AS s_name,
      data.Receiver       AS r_name,
      data.msg            AS msg,
      data.date           AS date
    FROM
      TableB              AS data
    LEFT JOIN
      TableA              AS sender
        ON sender.EmployeeName = data.Sender
    LEFT JOIN
      TableA              AS receiver
        ON receiver.EmployeeName = data.Receiver
    

    另外请注意,您的数据(事实)表中不应包含 NAME。您应该使用实体的 UniqueID,一个独立于实体属性(例如名称、地址等)的字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2018-02-09
      • 2011-02-25
      相关资源
      最近更新 更多