2017-06-07 12 views
0

を追加し、私は現在、私は別のものに1つのテーブルからデータを選択し、それぞれに特別なイドを追加しようとしているSQL Serverの2014TSQLを選択し、Idを

にTSQLクエリに取り組んでいます行。

私のクエリは次のようになります。私の所望の出力#tmpProjectsは次のようになります。

...

DECLARE @TargetId = 1 

SELECT * INTO #tmpProjects FROM @Projects 
UNION SELECT @TargetId AS 'TargetId' 

残念ながら、このSELECT文は動作しません:

ProjectId | Title | Manager | TargetId 
----------+-------------+-----------+----------- 
1   | projectX | 1123 | 1 
2   | projectY | 2245 | 1 
3   | projectZ | 3335 | 1 

私のインポートテーブルの@Projectsでは、ProjectId、Title、およびマネージャー。

この問題の解決方法をご存知ですか?したがって、一時的なテーブルを選択し、追加のIDを追加するには?

ありがとうございます!

+3

だけ選択に追加: 'PROJECTID、タイトル、マネージャー、@TargetId AS TargetId'この詳細な説明のために – HoneyBadger

答えて

1
create table #tmpProjects 
    (
     ProjectId varchar(20) , 
     Title varchar(20) , 
     Manager varchar(20), 
     TargetId varchar(20) 
    ) 
DECLARE @Projects table (ProjectId varchar(20) , Title varchar(20) ,Manager varchar(20)) 
insert into @Projects values ('p1' , 't1' , 'm1') 
insert into @Projects values ('p2' , 't2' , 'm2') 
select * from @Projects 

------------- **solution starts here** --------------- 
DECLARE @TargetId int 
set @TargetId = 1 
insert into #tmpProjects (ProjectId ,Title , Manager , TargetId) 
select ProjectId ,Title , Manager , @TargetId 
from @Projects 

select * from #tmpProjects 
+0

私は最後にそのようにそれを解決しました。詳細な例をありがとう! :) – TimHorton

1

テーブルに余分な列を追加する場合は、それを変更して新しい列を追加する必要があります。 列にデフォルト値を保持するには、DEFAULTキーワードを使用して値を指定します。 以下のクエリを見つけてください、私はこれが役立つことを願っています:

CREATE TABLE PROJECTS(ProjectId int, Title varchar(50), Manager varchar(50)) 
INSERT INTO PROJECTS 
VALUES 
(1, 'projectX' , '1123'), 
(2, 'projectY' , '2245'), 
(3, 'projectZ' , '3335') 
GO 
BEGIN 
SELECT * INTO #tmpProjects FROM PROJECTS 
ALTER TABLE #tmpProjects ADD TargetId INT NOT NULL DEFAULT (1) 
SELECT * FROM #tmpProjects 
END 

あなたはデフォルトのキーワード内の任意の変数を使用することはできません。しかし、任意の変数を使用するスカラー関数を作成することができます。 スカラー関数を使用して列にデフォルト値を追加する方法をこのリンクで確認できます。デフォルト値を挿入するためにDEFAULTキーワードを使用したい場合はhere.Youが明示的にNOT NULLとしてあなたの列を定義する必要があります

ALTER TABLE with programmatically determined constant DEFAULT value

もう一つ。あなたはそれをやっていない 場合には、

はコードのみNULL値を保持し、あなたがDEFAULTキーワードで提供されている任意の値を挿入しません。

ALTER TABLE #tmpProjects ADD TargetId INT NOT NULL DEFAULT (1) 

これが挿入されます TargetId列に入力します。しかし、

ALTER TABLE #tmpProjects ADD TargetId INT DEFAULT (1) 

これはあなたのターゲットIDの欄に、これはあなたの問題を解決します

希望をNULLを挿入します。

+0

感謝を選択!それは本当に有用です:)) – TimHorton

関連する問題