Na minha pergunta anterior , obtive uma tabela de resultados do formulário:
ano_masculino | idade | sexo_masculino | masculino_OrderID | ano_feminino | sexo_feminino | ID_do_pedido_feminino |
---|---|---|---|---|---|---|
2012 | 18 | M | 4268 | 2013 | F | 4269 |
2021 | 75 | M | 4269 | 2020 | F | 4270 |
2018 | 29 | M | 4271 | 2019 | F | 4272 |
2016 | 56 | M | 4273 | 2015 | F | 4270 |
2014 | 33 | M | 4274 | 2014 | F | 4272 |
2022 | 40 | M | 4001 | 2017 | F | 4002 |
O código para dar esse resultado é:
WITH male_sample AS (
SELECT TOP (200) [Year],[Gender],[Age],[OrderID]
FROM [test]
WHERE AgeYrend <= 90 AND Sex = 'M'
ORDER BY NEWID()),
female_sample AS (
SELECT TOP (200) m.[Year] AS male_Year, m.[Age] AS age, m.[Gender] AS male_Gender, m.[OrderID] AS male_OrderID,
f.[Year] AS female_Year, f.[Gender] AS female_Gender, f.[OrderID] AS female_OrderID
FROM male_sample m
INNER JOIN [Test] f ON m.Age = f.Age
WHERE f.Sex = 'F'
ORDER BY NEWID())
SELECT *
FROM female_sample
ORDER BY Age;
Então, tentei modificar isso para obter 2 tabelas de resultados separadas - uma para homens e uma para mulheres - enquanto ainda mantinha os pares de resultados de um homem e uma mulher da mesma idade. Este é o código que tentei:
WITH male_sample AS (
SELECT TOP (200) [Year],[Gender],[Age],[OrderID]
FROM [test]
WHERE AgeYrend <= 90 AND Sex = 'M'
ORDER BY NEWID()),
female_sample AS (
SELECT TOP (200) m.[Year] AS male_Year, m.[Age] AS age, m.[Gender] AS male_Gender, m.[OrderID] AS male_OrderID,
f.[Year] AS female_Year, f.[Gender] AS female_Gender, f.[OrderID] AS female_OrderID
FROM male_sample m
INNER JOIN [Test] f ON m.Age = f.Age
WHERE f.Sex = 'F'
ORDER BY NEWID())
SELECT male_Year, Age, male_Gender, male_OrderID
FROM female_sample
ORDER BY Age
SELECT female_Year, Age, female_Gender, female_OrderID
FROM female_sample
ORDER BY Age;
O SQL Server não gosta das 3 linhas finais de código, gerando o seguinte erro -
Msg 208, Nível 16, Estado 1, Linha 18
Nome de objeto inválido 'female_sample'.
Tentei mexer no código de várias maneiras, mas nada do que tentei funcionou. Alguém pode me dizer onde estou errando?