簡體   English   中英

SQL Server查詢-不需要具有相同數據的多行

[英]SQL Server query - don't want multiple rows with identical data

我有一個具有以下三個表的SQL Server數據庫-本文對此進行了簡化。

Stakeholder表(用於存儲人員個人數據...名稱,地址城市,州,郵政編碼等的表)

Stakeholder_id    full_name
---------------------------------------
1                 Joe Stakeholder
2                 Eric Stakeholder

SH Inquiry表(存儲有關利益相關方何時與我們聯系的信息的表)

sh_inquiry_id         inquiry_link_ID
-----------------------------------------------
1                     1
2                     1
3                     2

Sh Contacts (存儲有關我們何時與利益相關者聯系的信息的表)

sh_contact_id            contact_link_id
-----------------------------------------
1                             1
2                             1
3                             2

我想編寫一個顯示利益相關者信息的SQL查詢,然后在利益相關者行下方顯示所有查詢和所有聯系人? SQL有可能嗎? 因此,在這種情況下,將顯示一次joe涉眾,然后接下來將有4行(2個查詢和2個聯系人)。 埃里克(Eric)利益相關者將被顯示一次,其中有兩行,1個詢問和1個聯系人。

感謝您的任何提前幫助。

如前所述,您可能希望在應用程序代碼中處理此問題。 但是,您可以使用UNION查詢來執行所需的操作。

在下面的查詢中,我將后兩個表更改為SH_InquirySH_Contacts (帶下划線的空格),這通常是一個好習慣(在對象名稱中留有空格是個壞主意)。 另外,根據表的布局方式,您可能希望合並ContactsInquiry表(例如,有一個表,以及一個contact_type字段,將其標識為“入站”或“出站”)。

無論如何,使用CTE和聯合:

WITH Unionized AS
    (
        SELECT 
            stakeholder_id, 
            full_name,
            NULL AS contact_or_inquiry,
            NULL AS contact_or_inquiry_id
        FROM Stakeholder
        UNION ALL
        SELECT
            inquiry_link_id AS stakeholder_id,
            NULL AS full_name,
            'inquiry' AS contact_or_inquiry,
            sh_inquiry_id AS contact_or_inquiry_id
        FROM SH_Inquiry
        UNION ALL
        SELECT
            contact_link_id AS stakeholder_id,
            NULL AS full_name,
            'contact' AS contact,
            sh_contact_id AS contact_or_inquiry_id
        FROM SH_Contacts
    )
SELECT
    full_name,
    contact_or_inquiry,
    contact_or_inquiry_id
FROM Unionized
ORDER BY 
    stakeholder_id, 
    contact_or_inquiry, 
    contact_or_inquiry_id

給您這些結果:

+------------------+--------------------+-----------------------+
|    full_name     | contact_or_inquiry | contact_or_inquiry_id |
+------------------+--------------------+-----------------------+
| Joe Stakeholder  | NULL               | NULL                  |
| NULL             | contact            | 1                     |
| NULL             | contact            | 2                     |
| NULL             | inquiry            | 2                     |
| Eric Stakeholder | NULL               | NULL                  |
| NULL             | contact            | 3                     |
| NULL             | inquiry            | 1                     |
| NULL             | inquiry            | 3                     |
+------------------+--------------------+-----------------------+

暫無
暫無

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

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