Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接2个表并按id、优先级和显示;数_Mysql_Sql Server_Oracle - Fatal编程技术网

Mysql 连接2个表并按id、优先级和显示;数

Mysql 连接2个表并按id、优先级和显示;数,mysql,sql-server,oracle,Mysql,Sql Server,Oracle,示例表和预期结果: 下面显示的结果表是我实际想要的输出 尝试使用pivot执行以下查询: with pivot_data AS ( select client_id ,ph_type ,Ph_number from client_table inner join phone_table on client_table.phone_id = phone_table.ph_id ) select * from pivot_data piv

示例表和预期结果: 下面显示的结果表是我实际想要的输出

尝试使用pivot执行以下查询:

with pivot_data AS
(
  select client_id
        ,ph_type
        ,Ph_number
  from client_table
    inner join phone_table
      on client_table.phone_id = phone_table.ph_id
)
select *
from pivot_data
pivot (sum(ph_number)
       for ph_type in ('c','w','h')
      );
结果我得到:

任何帮助都将不胜感激。 sql server中的答案会很好,但如果oracle和mysql能够为我指明正确的方向,也欢迎他们提供答案。:)

提前感谢。

Oracle查询

SELECT *
FROM   (
  SELECT client_id, priority, phone_number, phone_type
  FROM   client_table c
         LEFT OUTER JOIN
         phone_table p
         ON ( c.phone_id = p.phone_id )
)
PIVOT ( MAX( phone_type ) AS phonetype, MAX( phone_number ) AS phonenumber
        FOR priority IN ( 1 AS Prio1, 2 AS Prio2, 3 AS Prio3 ) );
 CLIENT_ID PRIO1_PHONETYPE PRIO1_PHONENUMBER PRIO2_PHONETYPE PRIO2_PHONENUMBER PRIO3_PHONETYPE PRIO3_PHONENUMBER
---------- --------------- ----------------- --------------- ----------------- --------------- -----------------
         1 C               9999999999        H               5555555555        W               7777777777        
输出

SELECT *
FROM   (
  SELECT client_id, priority, phone_number, phone_type
  FROM   client_table c
         LEFT OUTER JOIN
         phone_table p
         ON ( c.phone_id = p.phone_id )
)
PIVOT ( MAX( phone_type ) AS phonetype, MAX( phone_number ) AS phonenumber
        FOR priority IN ( 1 AS Prio1, 2 AS Prio2, 3 AS Prio3 ) );
 CLIENT_ID PRIO1_PHONETYPE PRIO1_PHONENUMBER PRIO2_PHONETYPE PRIO2_PHONENUMBER PRIO3_PHONETYPE PRIO3_PHONENUMBER
---------- --------------- ----------------- --------------- ----------------- --------------- -----------------
         1 C               9999999999        H               5555555555        W               7777777777        

您确实需要进行一些阅读,了解您所要求的内容将如何对SSIS解决方案的维护产生不利影响

您所需要做的就是按原样导出数据。如果您必须将所有内容都放在一个CSV文件中,只需将两个表连接在一起,并保留一个标准化、可扩展的数据集,如果优先级增加,该数据集不会中断:

select c.client_id
        ,c.phone_id
        ,c.priority
        ,p.phone_type
        ,p.phone_number
from @Client c
    join @Phone p
        on c.phone_id = p.phone_id

mysql、sql server或oracle?我看不到任何问题?您有一些数据-请将其格式化为文本(或者更好地格式化为DML语句)-以及一个查询和一个输出,但您不会说它有什么问题或者您希望看到什么。。。我们应该如何帮助你?有多少优先级别?为什么你需要这种格式的结果?这不更适合在演示层中进行格式化吗?@MT0我在第一个图像链接中给出了预期结果,并在第二个图像链接中附加了我获得的结果。如果您查看我获得的结果与示例中的结果,您可以发现差异。@iamdave“client_table”的优先级列中可能有n个条目,我需要以示例中所示的特定格式显示结果,我必须将其导出为CSV&目标是这种格式的Dude这正是我想要的,非常感谢!!我原以为我应该使用pivot,但有点生疏却不知道该怎么做。谢谢:)