【发布时间】:2019-11-14 10:31:49
【问题描述】:
我正在使用以下 SQL 查询将数据插入临时表
INSERT INTO @tmp_Notify
SELECT 'U' + CONVERT(varchar,UserId), CONVERT([varchar](50), [FirstName]) + ' ' + CONVERT([varchar](50), [LastName])
FROM [User]
INNER JOIN dbo.UserGroup ON UserId = FkUserId
INNER JOIN [Group] ON GroupId = FkGroupId
GROUP BY UserId, CONVERT([varchar](50), [FirstName]), CONVERT([varchar](50), [LastName])
HAVING MIN(GroupLevel) >= @minGroup
ORDER BY CONVERT([varchar](50), [FirstName]), CONVERT([varchar](50), [LastName])
我插入几个数据如下,
将组数据插入为
INSERT INTO @tmp_Notify
SELECT 'G' + CONVERT(varchar,GroupId), 'Group - ' + GroupName
FROM [Group]
WHERE GroupLevel >= @minGroup AND IsActive = 1
ORDER BY GroupName
所以我需要先显示用户名列表,然后按 GroupName 显示组名。
我的完整代码是
--Users of the same group as currently logged in user and userÆs of higher groups
INSERT INTO @tmp_Notify
SELECT 'U' + CONVERT(varchar,UserId), CONVERT([varchar](50), DECRYPTBYKEY([FirstName])) + ' ' + CONVERT([varchar](50), DECRYPTBYKEY([LastName]))
FROM [User]
INNER JOIN dbo.UserGroup ON UserId = FkUserId
INNER JOIN [Group] ON GroupId = FkGroupId
GROUP BY UserId, CONVERT([varchar](50), DECRYPTBYKEY([FirstName])), CONVERT([varchar](50), DECRYPTBYKEY([LastName]))
HAVING MIN(GroupLevel) >= @minGroup
ORDER BY CONVERT([varchar](50), DECRYPTBYKEY([FirstName])), CONVERT([varchar](50), DECRYPTBYKEY([LastName]))
select * from @tmp_Notify
--Currently logged in userÆs group and higher groups
INSERT INTO @tmp_Notify
SELECT 'G' + CONVERT(varchar,GroupId), 'Group - ' + GroupName
FROM [Group]
WHERE GroupLevel >= @minGroup AND IsActive = 1
-- GROUP BY GroupId, GroupName
-- HAVING MIN(GroupLevel) >= @minGroup
ORDER BY GroupName
END
ELSE
BEGIN
INSERT INTO @tmp_Notify VALUES('Me','Me')
IF((SELECT FkSupervisor FROM [User] WHERE UserId = @currentUser) IS NOT NULL)
BEGIN
INSERT INTO @tmp_Notify VALUES('Supervisor','Supervisor')
END
END
--List Option (to allow a list of email addresses)
INSERT INTO @tmp_Notify VALUES('List','List')
--SELECT * FROM @tmp_Notify tn order by tn.NotifyName
SELECT * FROM @tmp_Notify
但这不是正确的顺序,我需要按FirstName 和LastName 对数据进行排序。我该怎么做呢
我的预期输出是
U10059 Emily Windrow
U10039 Esta Kulzer
U10030 Ileana Conklin
U10040 Kamala Millerbernd
U10007 Katherine Tayan
G110 Group - Managers
G112 Group - Membership Officers
G113 Group - Mortgage
G108 Group - Operations Administrator
G109 Group - PFS
List List
【问题讨论】:
-
您为什么要订购您的插件?
-
因为上面插入了多个数据,所以我需要按订单名称获取最终结果
-
如果您需要您的 final 结果按特定顺序排列,则
ORDER BY进入SELECT语句,而不是INSERT。 -
但是对插入进行排序根本没有任何效果(除了减慢查询速度)。对数据进行排序的唯一方法是在查询表时使用
order by -
@Larnu 问题是我在那个表中插入了几个数据,比如先是用户名列表,然后是组,
标签: sql sql-server group-by sql-order-by