Sql server 如何在CASE中添加默认子句
如何在Sql server 如何在CASE中添加默认子句,sql-server,tsql,Sql Server,Tsql,如何在CASE语句中添加默认子句?我有以下疑问: DECLARE @SortColumn VARCHAR(50) SELECT * FROM @GroupList ORDER BY CASE WHEN @SortColumn = 'GroupName ASC' THEN GroupName END ASC, CASE WHEN @SortColumn = 'GroupName DESC' THEN GroupName END DESC, CASE WHEN @Sort
CASE
语句中添加默认子句?我有以下疑问:
DECLARE @SortColumn VARCHAR(50)
SELECT *
FROM @GroupList
ORDER BY
CASE WHEN @SortColumn = 'GroupName ASC' THEN GroupName END ASC,
CASE WHEN @SortColumn = 'GroupName DESC' THEN GroupName END DESC,
CASE WHEN @SortColumn = 'LCC ASC' THEN LiveConnectEmailClosure END ASC,
CASE WHEN @SortColumn = 'LCC DESC' THEN LiveConnectEmailClosure END DESC,
CASE WHEN @SortColumn = 'ES ASC' THEN EnableSharing END ASC,
CASE WHEN @SortColumn = 'ES DESC' THEN EnableSharing END DESC,
CASE WHEN @SortColumn = 'Description ASC' THEN GroupDescription END ASC,
CASE WHEN @SortColumn = 'Description DESC' THEN GroupDescription END DESC
ELSE GroupName END ASC; -- this one doesn't work
备选方案:
DECLARE @SortDirection char(4) = 'ASC';
IF @SortColumn LIKE '%DESC' THEN
BEGIN
SET @SortDirection = 'DESC';
END;
SET @SortColumn = Replace(Replace(@SortColumn, ' DESC', ''), ' ASC', '');
SELECT list
, of
, columns
FROM (
SELECT list
, of
, columns
, CASE @SortColumn
WHEN 'GroupName' THEN GroupName
WHEN 'LCC' THEN LiveConnectEmailClosure
WHEN 'ES' THEN EnableSharing
WHEN 'Description' THEN GroupDescription
ELSE GroupName
END As sort_column
FROM @GroupList
) As x
ORDER
BY CASE WHEN @SortDirection = 'ASC' THEN sort_column END ASC
, CASE WHEN @SortDirection = 'DESC' THEN sort_column END DESC;
备选方案:
DECLARE @SortDirection char(4) = 'ASC';
IF @SortColumn LIKE '%DESC' THEN
BEGIN
SET @SortDirection = 'DESC';
END;
SET @SortColumn = Replace(Replace(@SortColumn, ' DESC', ''), ' ASC', '');
SELECT list
, of
, columns
FROM (
SELECT list
, of
, columns
, CASE @SortColumn
WHEN 'GroupName' THEN GroupName
WHEN 'LCC' THEN LiveConnectEmailClosure
WHEN 'ES' THEN EnableSharing
WHEN 'Description' THEN GroupDescription
ELSE GroupName
END As sort_column
FROM @GroupList
) As x
ORDER
BY CASE WHEN @SortDirection = 'ASC' THEN sort_column END ASC
, CASE WHEN @SortDirection = 'DESC' THEN sort_column END DESC;
好的,这是我给你的最好的,你仍然需要改变一两件事 假设:
create table GroupList (GroupName varchar(50),
LiveConnectEmailClosure varchar(50),
EnableSharing varchar(50),
GroupDescription varchar(50));
insert into GroupList values('GroupName1','YES','True','SomeDescrition');
insert into GroupList values('GroupName1','YES','True','SomeDescrition');
insert into GroupList values('GroupName1','NO','False','SomeDescrition');
insert into GroupList values('GroupName2','YES','True','SomeDescrition');
insert into GroupList values('GroupName2','YES','False','SomeDescrition');
insert into GroupList values('GroupName3','NO','True','SomeDescrition');
insert into GroupList values('GroupName3','NO','False','SomeDescrition');
insert into GroupList values('GroupName4','NO','True','SomeDescrition');
insert into GroupList values('GroupName4','NO','True','SomeDescrition');
insert into GroupList values('GroupName4','YES','False','SomeDescrition');
然后
这是我在没有T-sql编辑器的情况下所能做的最好的了,希望这能有所帮助
除此之外:请看
好的,这是我给你的最好的,你仍然需要改变一两件事 假设:
create table GroupList (GroupName varchar(50),
LiveConnectEmailClosure varchar(50),
EnableSharing varchar(50),
GroupDescription varchar(50));
insert into GroupList values('GroupName1','YES','True','SomeDescrition');
insert into GroupList values('GroupName1','YES','True','SomeDescrition');
insert into GroupList values('GroupName1','NO','False','SomeDescrition');
insert into GroupList values('GroupName2','YES','True','SomeDescrition');
insert into GroupList values('GroupName2','YES','False','SomeDescrition');
insert into GroupList values('GroupName3','NO','True','SomeDescrition');
insert into GroupList values('GroupName3','NO','False','SomeDescrition');
insert into GroupList values('GroupName4','NO','True','SomeDescrition');
insert into GroupList values('GroupName4','NO','True','SomeDescrition');
insert into GroupList values('GroupName4','YES','False','SomeDescrition');
然后
这是我在没有T-sql编辑器的情况下所能做的最好的了,希望这能有所帮助
除此之外:请看
我喜欢第二个版本,它更接近我想要实现的目标。然而,它不起作用。请你把整个select语句都写下来好吗?我觉得我错过了什么。如果没有提供任何内容或提供的内容与列表中的内容不同,则标准应为“GroupName ASC”
ASC
需要在CASE
语句的末尾。它不能混合搭配。我试过几种组合。你能写一个完整的select语句吗?我喜欢第二个版本,它更接近我想要实现的目标。然而,它不起作用。请你把整个select语句都写下来好吗?我觉得我错过了什么。如果没有提供任何内容或提供的内容与列表中的内容不同,则标准应为“GroupName ASC”ASC
需要在CASE
语句的末尾。它不能混合搭配。我试过几种组合。你能写一个完整的select语句吗?
SELECT
CASE
WHEN xyz.something = 1 THEN 'SOMETEXT'
WHEN xyz.somethingelse = 1 THEN 'SOMEOTHERTEXT'
WHEN xyz.somethingelseagain = 2 THEN 'SOMEOTHERTEXTGOESHERE'
ELSE 'SOMETHING UNKNOWN'
END AS ColumnName;