簡體   English   中英

將動態行轉置為列

[英]Transpose dynamic rows into columns

我有兩個表:一個是programs ,另一個是bookprograms programs表是您獲得程序名稱的地方。 可以添加或編輯此表中的行。

我在下面使用了查詢,但沒有反映出是否有新程序:

SELECT  MAX(IF(programs = 'cla', title, NULL)) cla,
    MAX(IF(programs = 'csm', title, NULL)) csm
FROM    bookprograms
GROUP BY title

第一個表的結構。

╦════════════╦═════════════╗
║ ID         ║   Programs  ║
╬════════════╬═════════════╣
║ 1          ║     cla     ║
║ 2          ║     csm     ║
╩════════════╩═════════════╝

第二張表是我存儲書籍和與其對應的程序的地方。

╦════════════╦═════════════╗
║ Title      ║   Programs  ║
╬════════════╬═════════════╣
║ title1     ║     cla     ║
║ title2     ║     csm     ║
║ title3     ║     cla     ║
╩════════════╩═════════════╝

我將如何得出這個結果?

╦════════════╦═════════════╗
║ cla        ║   csm       ║
╬════════════╬═════════════╣
║ title1     ║   title     ║
║ title3     ║             ║
╩════════════╩═════════════╝

此查詢返回所需的數據,但格式不完全符合所需格式:

SELECT programs, GROUP_CONCAT(title) AS titles
FROM bookprograms
GROUP BY programs

它返回:

 programs | titles
----------+---------------
 cla      | title1,title3
 cls      | title2

在客戶端代碼中,您可以將其變形為所需的結構。 頭單元的值在現場programs返回。 用逗號( , )分隔字段title的值,您將獲得該列其余部分的數據單元格。 對結果集中的每一行重復此操作,以獲取所需表的所有列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM