Mysql 连接2个表并按id、优先级和显示;数
示例表和预期结果: 下面显示的结果表是我实际想要的输出 尝试使用pivot执行以下查询: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
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,但有点生疏却不知道该怎么做。谢谢:)