私はビューを変更しようとしています。ビューを変更していると固まってしまった
私のユーザーには、親(母親と父親)のデータを持つデータベースビューを照会する古いプログラムがあります。母親と父親の名前は単一のレコード(id、fname、lname、fname2、lname2など)を共有していました。
新しいデータベースを作成しました。テーブルと対応するビューがuser_id、parent_id、fname、およびlnameに変更されました。
親はuser_idを共有しますが、個々のparent_idを持ちます。
とにかく、(user_id、fname、lname)の結果を(id、fname、lname、fname2、lname2)のように戻そうとしていて、固まってしまった。
これは私が(PARENT_IDを除く)で始まるものです:私はので、私は次のコードに着いどこから始めればわからなかった
user_id fname lname expiration
4 Jane Doe 2015-01-01 00:00:00.000
4 John Doe 2015-01-01 00:00:00.000
5 Bill Smith 2015-01-01 00:00:00.000
5 Mary Smith 2015-01-01 00:00:00.000
これはSQLで私がしようとしているとつかまった:
SELECT ROW_NUMBER() OVER (PARTITION BY parents.user_id ORDER BY parents.user_id ASC) RowVersion ,
dbo.parents.user_id ,
fname ,
lname ,
'' AS fname2 ,
'' AS lname2 ,
ExpirationDate AS 'expiration'
FROM dbo.parents
INNER JOIN dbo.payment ON dbo.parents.user_id = dbo.payment.User_Id
UNION
SELECT ROW_NUMBER() OVER (PARTITION BY parents.user_id ORDER BY parents.user_id ASC) RowVersion ,
dbo.parents.user_id ,
'' AS fname ,
'' AS lname ,
fname AS fname2 ,
lname AS lname2 ,
ExpirationDate AS 'expiration'
FROM dbo.parents
INNER JOIN dbo.payment ON dbo.parents.user_id = dbo.payment.User_Id
GROUP BY parents.user_id ,
fname ,
lname ,
ExpirationDate
これは上記のSQLの結果です。
RowVersion user_id fname lname fname2 lname2 expiration
1 4 John Doe 2015-01-01 00:00:00.000
1 4 Jane Doe 2015-01-01 00:00:00.000
2 4 Jane Doe 2015-01-01 00:00:00.000
2 4 John Doe 2015-01-01 00:00:00.000
1 5 Bill Smith 2015-01-01 00:00:00.000
1 5 Mary Smith 2015-01-01 00:00:00.000
2 5 Mary Smith 2015-01-01 00:00:00.000
2 5 Bill Smith 2015-01-01 00:00:00.000
これは私が必要なものである:
user_id fname lname fname2 lname2 expiration
4 Jane Doe John Doe 2015-01-01 00:00:00.000
5 Bill Smith Mary Smith 2015-01-01 00:00:00.000
私は近いですが、私は間違った道を下って行ったように私も感じるように私は感じます。助言がありますか?
常に同じ「user_id」の2つの行がありますすべての 'user_id'を? –