如果已經發送技術人員將問題修復到客戶端主頁,我有以下CTE查詢來查找。使用TSQL從遞歸CTE查詢中複製數據
此表包含安裝之間的關係數據。它告訴我安裝A是否與B鏈接,如果B與D鏈接,則使A和D鏈接。這可以繼續進行90個不同的條目來創建一個大的關係方案。
INIR_Id:ID
INIR_INST_Id:安裝ID
INIR_INRE_Id關係ID
INIR_Date:日期已添加的關係。
CREATE TABLE [dbo].[CPL_t_Installations_InstallationsRelations](
[INIR_Id] [bigint] IDENTITY(1,1) NOT NULL,
[INIR_INST_Id] [int] NOT NULL,
[INIR_INRE_Id] [bigint] NOT NULL,
[INIR_Date] [datetime] NOT NULL,
CONSTRAINT [PK_CPL_t_Installations_InstallationsRelations] PRIMARY KEY CLUSTERED
(
[INIR_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
WITH Tempou(Relation,Installation,Date,Origine)AS
(
(
SELECT
INIR_INRE_Id,
INIR_INST_Id,
INIR_Date,
1
FROM
CPL_t_Installations_InstallationsRelations
WHERE
([email protected]_Id)
)
UNION ALL
(
SELECT
INIR_INRE_Id,
INIR_INST_Id,
INIR_Date,
0
FROM
CPL_t_Installations_InstallationsRelations
INNER JOIN Tempou Alpha ON(Relation=INIR_INRE_Id)
WHERE
(INIR_Date<Date)
AND NOT
(
(Installation=INIR_INST_Id)
AND
(Relation=INIR_INRE_Id)
)
)
)
SELECT TOP * FROM Tempou;
查詢的問題是它循環回到CTE結果集中的每個日期。每個結果都會重複一段時間。我使用日期作爲監控數據,從無限多次到128個條目的結果集。但是,如果我們使用DISTINCT查詢Tempou中的所有內容,我們就會做14個結果,這是正確的數字。除了最好的日期數據之外,沒有分層數據。
我一直在這工作幾天,從無限的結果到128是相當不錯的,但它不是答案。我可能會很累,並且看不到這個問題。留下我問你所有我看不到的東西。
Ps .:我沒有數據可以作爲例子分享,但結果的「級別」數量沒有限制,有些客戶可能有2個級別,有些可能有20個。而且鏈接的數據當然是不是對稱的,有些「根」可能比其他的短。
謝謝!除此之外,如果我可以讓用戶「Tempou」執行「NOT EXISTS」,那麼問題就可以解決,但是CTE不可能複製每個條目。所以我真的想要找到一種方法來改變CTE,以便能夠複製這種行爲。
將別名添加到您的連接並在所有參考中使用它們可能會讓我們更好地瞭解您正在嘗試做什麼。向我們展示表格模式也會有所幫助。 – HABO
至少有一個問題「INNER JOIN CPL_t_Installations_InstallationsRelations ON(INIR_INRE_Id = INRE_Id)」其中表的INIR_INRE_Id,其中表的INRE_Id ... – bummi
@bummi 我更新了查詢以更正它。這段代碼現在應該在那裏,我很可能上傳了一個我正在玩的版本。 – Rv3