在我之前的问题中,我得到了以下形式的结果表:
男性年龄 | 年龄 | 男性 | male_订单ID | 女性年龄 | 女性性别 | female_订单ID |
---|---|---|---|---|---|---|
2012 | 18 | 米 | 4268 | 2013 | F | 4269 |
2021 | 75 | 米 | 4269 | 2020 | F | 4270 |
2018 | 二十九 | 米 | 4271 | 2019 | F | 4272 |
2016 | 56 | 米 | 4273 | 2015 | F | 4270 |
2014 | 33 | 米 | 4274 | 2014 | F | 4272 |
2022 | 40 | 米 | 4001 | 2017 | F | 4002 |
给出此结果的代码是:
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;
然后,我尝试修改它以获得 2 个单独的结果表 - 一个用于男性,一个用于女性 - 同时仍然保持相同年龄的男性和女性的结果对。这是我尝试过的代码:
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;
SQL Server 不喜欢最后三行代码给出以下错误 -
消息 208,级别 16,状态 1,第 18 行
对象名称“female_sample”无效。
我尝试过用各种方法摆弄代码,但都没有效果,有人能指出我哪里错了吗?