2016-01-25 99 views
-2

我不經常使用SQL,因此,自己找出解決方案似乎並不是很有效。將查詢結果插入到SQL Server數據庫中的現有表中

我想插入這個查詢

select 
    zadavatel, advertiser 
from 
    DATA_2015_CZ_CLEAN_v03 
where 
    Advertiser is null and zadavatel is not null 
group by 
    zadavatel, advertiser 

成表,具有這些列[Zadavatel]的結果,[廣告],[注]

從該查詢上述廣告

進一步爲空,但我想要將Advertiser值更改爲相等的zadavatel值。所以排得很明顯。注意是可空列。

讓它更容易理解查詢結果可能看起來像。

Zadavatel Advertiser 
Coca-Cola Null 
Pepsi-cola Null 

表Zadavatel可能看起來像這樣

Zadavatel Advertiser Note 
Mercedes Mercedes Null 
Ferrero ltd Ferrero  Null 

更新Zadavatel應該是這樣的

Zadavatel Advertiser Note 
Mercedes  Mercedes Null 
Ferrero ltd Ferrero  Null 
Coca-Cola Coca-Cola Null 
Pepsi-Cola Pepsi-Cola Null 

重要的是要提的是,只能從查詢結果中的廣告客戶應採取zadavatel值。正如你在決賽桌看到費雷羅有限公司和費雷羅不匹配,這已經是手工加工的結果

感謝

回答

0

您可以通過添加INTO插入到一個臨時表.....

SELECT zadavatel, COALESCE(advertiser, zadavatel), NULL 
INTO #TEMPTABLE 
FROM DATA_2015_CZ_CLEAN_v03 

COALESCE處理廣告客戶是否爲空並且在該實例中使用zadavatel。 不知道你在Notes中想要什麼。

如果你想讓它成爲一個permananet表,你有表正確定義....

INSERT INTO YourTable 
(Field1, Field2, Field3) 
SELECT zadavatel, COALESCE(advertiser, zadavatel), NULL 
FROM DATA_2015_CZ_CLEAN_v03 
+0

感謝很好的工作。 – bullshit

1

晚了一些,但它可以幫助你以及

USE tempdb 
GO 
IF OBJECT_ID(N'tempdb.dbo.#Data1') IS NULL 
BEGIN 
    CREATE TABLE #Data1 
    (
    ID INT IDENTITY 
    ,Valor1 VARCHAR(100) 
    ,Valor2 VARCHAR(100) 
    ) 
END 
GO 
IF OBJECT_ID(N'tempdb.dbo.#Data2') IS NULL 
BEGIN 
    CREATE TABLE #Data2 
    (
    ID INT IDENTITY 
    ,Valor1 VARCHAR(100) 
    ,Valor2 VARCHAR(100) 
    ,Note VARCHAR(100) 
    ) 
END 
INSERT INTO #Data1 (Valor1) VALUES ('test'), ('test3') 
INSERT INTO #Data2 (Valor1,Valor2) VALUES ('test','test3'),('test2','test4') 
GO 
SELECT * FROM #Data1 
SELECT * FROM #Data2 
GO 
INSERT INTO #Data2 (Valor1,Valor2) 
SELECT Valor1, COALESCE (Valor2,Valor1) FROM #Data1 
GO 
SELECT * FROM #Data2 
GO 
DROP TABLE #Data2 
DROP TABLE #Data1 
相關問題