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