簡體   English   中英

SQL查詢-除透視之外的更多選項和建議

[英]SQL Query - More options and suggestions apart from pivoting

SQL的新手,請不要介意這是否是一個愚蠢的問題。

在此處輸入圖片說明

我只想向經理發送一封電子郵件,告訴他您組中的這些員工未能填寫時間表。 目前,我已經繞過了上面的表格,並通過隱藏firstemp + secondemp + thirdemp + ------發送電子郵件,這可以通過任何更簡單的方法來完成嗎? 在此處輸入圖片說明

您可以使用CONCAT()函數在一行中檢索單行數據

SELECT M_EMAIL,
       CONCAT(FIRSTEMP, SECONDEMP, THIRDEMP, FOURTHEMP, FIFTHEMP...)
FROM 'your_table';

CONCAT()用空字符串替換NULL值。

請不要旋轉,因為concat維護起來確實很丑陋(如果彈出一個比您的concat列更多的能力更強的經理並且下屬更多,那么該管理器就會崩潰)。

語法取決於您使用的SQL Server。 例如,在MSSQL中,您可以這樣做:

select manager, m_email, STRING_AGG(employee, ', ') as subordinates
from Employee
group by manager, m_email

無論管理器有多少個下屬,此結果每個管理器只有1行,列數是固定的:

manager | m_email   | subordinates
----------------------------------
A       | A@A.COM   | b, D
D       | D@D.COM   | e, h
I       | I@I.COM   | j

在此處播放示例: http : //sqlfiddle.com/#!18/73bb5/5

另一種選擇是將相關數據查詢到應用程序層並在那里進行分組。

暫無
暫無

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

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