2017-04-25 62 views
-1

我需要在SQL Server中進行查詢幫助2014 我有如下表SQL服務器2014返回特定結果

ID   Part 
SP470PR 
SP470PR  181607 
SP470PR  1030 

我需要的結果顯示如下:

ID   Part 
SP470PR  181607 
SP470PR  1030  
181607  SP470PR 
181607  1030  
1030  181607 
1030  SP470PR 

燦任何人幫助我這個查詢? 我嘗試使用Lead函數,但無法獲得我想要的結果?

謝謝

+0

什麼是'Part'的數據類型? –

+0

數據類型爲nvarchar – user3782230

+0

您的樣本數據不適合您的預期結果。您的樣本結果是什麼意思? –

回答

1

試試這個使用CROSS JOIN: -

Select * from table 
where part is not null 
union all 
Select distinct a.part as ID,b.ID as part from 
(select part from table) a 
cross join 
(select id from table) b 
where part is not null 
union all 
Select a.part as ID,b.part from 
(select part from table where part is not null) a 
cross join 
(select part from table where part is not null) b 
where a.part<>b.part 
+0

@ user3782230你試過這個查詢嗎? –

0

有數據的非常samll樣品,所以我不知道我這樣做是正確的,但與工會的幫助下聯接我得到這個:

創建並填充示例表(保存我們這一步在你未來的問題):

DECLARE @T AS TABLE 
(
    ID nvarchar(10), 
    Part nvarchar(10) 
) 

INSERT INTO @T VALUES 
('SP470PR', NULL), 
('SP470PR', '181607'), 
('SP470PR', '1030') 

查詢:

SELECT ID, Part 
FROM @T 
WHERE Part IS NOT NULL 
UNION 
SELECT Part, ID 
FROM @T 
WHERE Part IS NOT NULL 
UNION 
SELECT t1.Part, t2.Part 
FROM @T t1 
INNER JOIN @T t2 ON t1.Id = t2.Id 
WHERE t1.Part <> t2.Part 
ORDER BY ID DESC, PART DESC 

結果:

ID  Part 
SP470PR 181607 
SP470PR 1030 
181607 SP470PR 
181607 1030 
1030 SP470PR 
1030 181607 
+0

這是我的整個表格(@ India.Rocket) ,但並不總是有幾個ID相同的字段... http://partsshop.mk/Test_script.rar – user3782230

+0

我不會下載它。您應該創建一個最小樣本數據,以涵蓋您需要的所有條件並相應地編輯您的問題。另外,請按照我在答案中所做的那樣發佈樣本數據 - 作爲DDL + DML,以便我們可以在發佈前檢查我們的答案。 –