2017-09-21 10 views
-1

私は2つのテーブルがあります。更新列

Hvac_Setup

ID (int) 
SuiteType (varchar(50)) 
Suite (varchar(1000)) 

スイート

ID (int) 
SuiteNumber (varchar(10)) 
SuiteType (varchar(50)) 

Hvac_Setupテーブル内のサンプル・データを:

ID | SuiteType (description) | SuiteNumbers 
1 | Helmodul A suite A  | 103A,104A (separated by comma, nn suites) 
2 | Helmodul A suite A m/hems| 316A,412A,503A,504A,505B,509A,510A 
3 | Helmodul A suite A m/sov | 217A 

IはSuiteNumbersSuiteNumbersで)一致Hwac_Setupテーブルから正しいSuiteTypeデータとSuitesテーブルでSuiteType列を更新するSQLクエリを作成することを望みます。更新

ID | SuiteNumber | SuiteType 
---+----------------+---------------------------  
1 | 103A  | Helmodul A suite A 
2 | 104A  | Helmodul A suite A 
3 | 316A  | Helmodul A suite A m/hems 
.. 
.. 
n | 217A  | Helmodul A suite A m/sov 

Suitesテーブルの

サンプル・データは、誰かが構文で私を助けることができますか?

+7

これには文字列スプリッタが必要です。私の個人的な選択は、Jeff ModenとSQL Server Centralのコミュニティからです。 http://www.sqlservercentral.com/articles/Tally+Table/72993/ここには他にも優れた選択肢がいくつかあります。 http://sqlperformance.com/2012/07/t-sql-queries/split-strings最も大きな問題は、データが正規化されていないことです。区切られたデータを保存すると、1NFに違反し、痛みが非常に大きくなります。 –

+2

SQL Serverのバージョン。 2016には機能が組み込まれています。それ以外の場合は自分自身のビルドが必要です。 – ttallierchio

答えて

0

これを試してみてください:ところで

set nocount on 

if object_id ('tempdb..#Hvac_Setup') is not null drop table #Hvac_Setup 

create table #Hvac_Setup 
    (
    ID int, 
    SuiteType varchar(50), 
    SuiteNumbers varchar(1000) 
    ) 

if object_id ('tempdb..#Suites') is not null drop table #Suites 

create table #Suites 
    (
    ID int, 
    SuiteNumber varchar(10), 
    SuiteType varchar(50) 
    ) 

insert #Hvac_Setup values 
    (1, 'Helmodul A suite A', '103A,104A'), 
    (2, 'Helmodul A suite A m/hems', '316A,412A,503A,504A,505B,509A,510A'), 
    (3, 'Helmodul A suite A m/sov', '217A') 

select * from #Hvac_Setup 

insert #Suites values 
    (1,'103A', 'Helmodul A suite A'), 
    (2,'104A', 'Helmodul A suite A'), 
    (3,'316A', 'Helmodul A suite A m/hems') 

select * from #Suites 

update #Suites 
set SuiteType = hs.SuiteType 
from #Suites s 
inner join #Hvac_Setup as hs 
on hs.SuiteNumbers like '%'+ s.SuiteNumber +'%' 

select * from #Suites 

を:あなたは、彼らが一貫しているような方法であなたの質問を書くようにしてください(あなたのテーブル内のスイートまたはSuiteNumbers?)。