Я работаю над изменением вида, и я застрял.Изменение вида, и я застрял
У моего пользователя есть старая программа, которая запрашивает представление базы данных с родительскими (матери и отцом) данными. Имя матери и отца поделилось одной записью (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' fo r каждый 'user_id'? –