【发布时间】:2021-01-08 21:24:40
【问题描述】:
所以我有 3 个表 Friends 和 Students,它们都有一个 ID 列。但在 Friends 表中,还有一个称为 Friend_ID 的列。我想按照 Friend_ID 的排序方式重新排序 Friends 中的 Name 列。有可能吗?
这是针对问题的 - https://www.hackerrank.com/challenges/placements/problem?isFullScreen=false
注意:我想使用这个 没有 ORDER BY 子句,因为这将是一个子查询。
我在 SQL Server 中的查询。
WITH
CTE (NID,N_Name,N_Salary,FID) AS
(SELECT S.ID AS NID, S.Name AS N_Name, P.Salary AS N_Salary, F.Friend_ID AS FID
FROM Students S JOIN Friends F
ON S.ID = F.ID JOIN Packages P
ON S.ID = P.ID),
--SELECT L.NID,L.N_Name,L.N_Salary,L.FID,R.FN_Sal
SELECT
IIF(L.N_Salary > R.FN_Sal,
IIF(L.FID IN (SELECT ID FROM Students WHERE Students.ID=R.N_ID),L.N_Name,"No val")
,NULL)
FROM CTE L
JOIN
(SELECT F.ID AS N_ID, P.Salary AS FN_Sal, F.Friend_ID AS F_ID
FROM Friends F JOIN Packages P ON F.Friend_ID = P.ID) R
ON L.NID = R.N_ID
我猜我的查询有问题。这绝对不是一个优雅的解决方案,但我只是在尝试一个想法。任何意见都会非常有帮助,在此先感谢。
【问题讨论】:
-
因为问题有点朦胧,能否提供一张表格,说明你想要达到的效果?
-
好的,我将对问题进行编辑。请参阅@Giannis,我正在尝试将此查询用作另一个查询中的子查询。因此我不想使用 ORDER BY 子句。这是针对 Hackerrank 问题的。
标签: sql sql-server join