我有以下要求:
学生和家长登录详细信息需要邮件合并才能发送信件
在我们的数据库中,大多数学生都有单亲联系,很少有2人
我正在撰写一个查询(如下),提供学生和家长的详细信息以及用户名 - 学生ID_1或学生ID_2(取决于父母的人数) 自动生成密码。
我们要做的是,如果学生有单亲,那么只有他们的联系方式需要显示在我的查询中,而不是额外的身份
我正在努力在我的查询中实现这一点,所以非常感谢任何帮助。
SELECT StudID, StudName, RTRIM(StudID) + '_1' AS Parent_Username, CAST(ABS(CHECKSUM(NEWID())) % 10 AS VARCHAR(1))
+ CHAR(ASCII('a') + ABS(CHECKSUM(NEWID())) % 25) + CHAR(ASCII('A') + ABS(CHECKSUM(NEWID())) % 25) + LEFT(NEWID(), 5) AS Parent_Password
FROM
Student
StudId StudName Gender Parent Username Parent Password
09054828 Alexander Lewis M 09054828_1 0iCCA086
09054828 Alexander Lewis M 09054828_1 6jI247CA
09054828 Alexander Lewis M 09054828_1 7xA1075E
09054828 Alexander Lewis M 09054828_1 3dFCBCCF
09056750 Daniel O'Sullivan M 09056750_1 6tC76C96
09057033 Daniel Geggus M 09057033_1 9gXDB414
And we have Parents Portal table which has below data
StudentID Name ParentUsername ParentPassword
9054828 Lewis Alexander 09054828_1 l5oXYQo
9054828 Lewis Alexander 09054828_2 70AYvbi
9056750 O'Sullivan Daniel 09056750_1 1OnVMn0
9056750 O'Sullivan Daniel 09056750_2 rT47Sx5
9057033 Geggus Daniel 09057033_1 Ap6EV3v
9057033 Geggus Daniel 09057033_2 Ar4AQ22
所以,一旦我将原始查询加入Parents Portal表,我将在下面看到
StudentID Name ParentUsername ParentPassword
09054828 Alexander Lewis M 09054828_1 0iCCA086
09054828 Alexander Lewis M 09054828_1 6jI247CA
09054828 Alexander Lewis M 09054828_1 7xA1075E
09054828 Alexander Lewis M 09054828_1 3dFCBCCF
9056750 Daniel O'Sullivan 09056750_1 1OnVMn0
9057033 Daniel Geggus 09057033_1 Ap6EV3v
即使学生有2个父母的成绩加倍(4行而不是2)
任何想法或建议如何限制重复行?
由于 的Ar
答案 0 :(得分:1)
您可以在公用表表达式或子查询中使用RANK()OVER(PARTITION By StudID order by),然后仅过滤rank = 1.
with query as (
SELECT
RANK() OVER (PARTITION By StudID order by <column parent related>) as rank,
StudID,
StudName,
RTRIM(StudID) + '_1' AS Parent_Username,
CAST(
ABS(CHECKSUM(NEWID())) % 10 AS VARCHAR(1))
+ CHAR(ASCII('a') + ABS(CHECKSUM(NEWID())) % 25)
+ CHAR(ASCII('A') + ABS(CHECKSUM(NEWID())) % 25)
+ LEFT(NEWID(), 5) AS Parent_Password
FROM Student)
select StudID,StudName,Parent_Username, Parent_Password from query where rank = 1
有关详细信息,请参阅windows documentation