我正在使用SQL Server 2008 R2。我有一些關於從兩個表中獲取數據的問題。如何從兩個不同的表創建自定義表
我具有低於一個(第一)表示:
在此表中,我已存儲的一組1D爲第二個表。
這這裏是第二個表:
以上圖像是具有主鍵的主表。
現在我想創建一個讀取第一個表中的數據,並檢查定製表,該ID是存在的第二個表或不如果是比我的自定義表應該有關於它的條目。我也想從兩個表中獲取其他記錄以及我的自定義表格。
的任何解決方案,將不勝感激。
我正在使用SQL Server 2008 R2。我有一些關於從兩個表中獲取數據的問題。如何從兩個不同的表創建自定義表
我具有低於一個(第一)表示:
在此表中,我已存儲的一組1D爲第二個表。
這這裏是第二個表:
以上圖像是具有主鍵的主表。
現在我想創建一個讀取第一個表中的數據,並檢查定製表,該ID是存在的第二個表或不如果是比我的自定義表應該有關於它的條目。我也想從兩個表中獲取其他記錄以及我的自定義表格。
的任何解決方案,將不勝感激。
這裏,我們將使用PARSE名稱中使用ID值,使它們,然後將它們與兩個表進行比較的現有記錄
declare @table1 table (ID varchar(10))
insert into @table1(ID) values ('3,4,6'),('1,2,3'),('2,3'),('1,2,3'),('1,2')
declare @table2 table (ID int)
insert into @table2(ID) values(1),(2),(3),(4),(5),(6),(7),(8)
Declare @Custom Table (ID INT)
;WITH CTE AS (
SELECT
PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) 'ID'
FROM
(
SELECT
CAST ('<M>' + REPLACE([ID], ',', '</M><M>') + '</M>' AS XML) AS Data
FROM @table1
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a))
INSERT INTO @Custom (ID)
Select T.ID from @table2 T
WHERE EXISTS
(SELECT DISTINCT C.ID
FROM CTE C
WHERE T.ID = C.ID)
select * from @Custom
按我的要求,我通過mohan111
了提供答案的基礎上,該解決方案;WITH CTE AS (
SELECT
PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) 'ID'
FROM
(
SELECT
CAST ('<M>' + REPLACE(Id, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM table1
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a))
SELECT ColumnName FROM CTE C
join table2 im on im.Id = c.ID
「給我了一些解決方案。」這聽起來像一個命令,如果你想要答案,最好要有禮貌! – HoneyBadger
爲什麼ID是逗號分隔值已存儲。真的很反對正常化爲什麼它已存儲在這種方式 – mohan111
是@ mohan111你是正確的,但按規定我必須這樣做。所以我必須繼續這個。 –