用就怎么用BETWEEN
运营商与CASE
声明如何运营商之间有case语句在SQL Server 2005中
@FromEmpAge
@ToempAge
select * from Emp
where EmpAge between
case when ToempAge0 then @FromEmpAge and @ToempAge end
如何做到这一点?
用就怎么用BETWEEN
运营商与CASE
声明如何运营商之间有case语句在SQL Server 2005中
@FromEmpAge
@ToempAge
select * from Emp
where EmpAge between
case when ToempAge0 then @FromEmpAge and @ToempAge end
如何做到这一点?
不知道它是否工作 - 但如果它没有,你就必须首先要确保正确完成您CASE
声明!
SELECT
(list of columns)
FROM
dbo.Emp
WHERE
EmpAge BETWEEN
CASE (some column) | this is the first value
WHEN ToEmpAge0 THEN @FromEmpAge | for the BETWEEN ....
END | close the CASE
AND @ToempAge | this is the second value
的CASE
需要至少有一个WHEN....THEN....
,然后一个END
“关闭”,然后CASE
- 只有在这之后,你可以继续走下去.....
但再次:不知道这是否会正常工作,甚至与“正确”的语法.....
我不知道你的意思ToEmpAge0
什么。无论如何,marc_s已经回答了你的关于如何使用BETWEEN
运营商内部CASE
声明,如果你把WHEN
后适当的文字值,将工作的问题。 您也可以使用CASE
语句作为BETWEEN
运算符的第二个操作数。
我会认为ToEmpAge
是INT
列:
SELECT
(list of columns)
FROM
dbo.Emp
WHERE
EmpAge BETWEEN
CASE ToEmpAge
WHEN 0 THEN @FromEmpAge
WHEN 1 THEN @FromEmpAge+10 --or whatever
END
AND
CASE ToEmpAge
WHEN 0 THEN @ToEmpAge
WHEN 1 THEN @ToEmpAge+5
END
SELECT *
FROM CTE
WHERE RN BETWEEN case @Excel when 0 then (@StartRow - cast(@NumberOfRows AS int)) else @NumberOfRows end
AND case @Excel when 0 then (@StartRow - 1) else @PageIndex end
DECLARE @StartRow INT
SET @StartRow = (cast(@PageIndex as int) * cast(@NumberOfRows as int)) + 1 ;
WITH CTE
AS (SELECT ROW_NUMBER() OVER (ORDER BY CASE
WHEN @SortColumnName = 'ID'
AND @SortOrderBy = 'asc'
THEN sod.ID
END ASC, CASE
WHEN @SortColumnName = 'ID'
AND @SortOrderBy = 'desc'
THEN sod.ID
END DESC, CASE
WHEN @SortColumnName = 'MessageText'
AND @SortOrderBy = 'asc'
THEN MessageText
END ASC, CASE
WHEN @SortColumnName = 'MessageText'
AND @SortOrderBy = 'desc'
THEN MessageText
END DESC, CASE
WHEN @SortColumnName = 'TO'
AND @SortOrderBy = 'desc'
THEN [TO]
END DESC
) AS RN ,
[SendedDate]
,[UserID]
,sod.[ID]
,[SmsOutboxID]
,[MessageID]
,[FolderID]
,[From]
,[TO]
,[MessageText]
,[SendedType]
,[SendedStatus]
,[IsDelete]
,[NumberOfMessage]
,[MessageType]
,[PricesbySMS]
,[Sended]
FROM SMS_Outbox so inner join SMS_OutboxDetails sod on so.ID = sod.SmsOutboxID where so.UserID = @UserID and sod.SendedType = @Type and sod.IsDelete = 0)
SELECT *
FROM CTE
WHERE RN BETWEEN case @Excel when 0 then (@StartRow - cast(@NumberOfRows AS int)) else @NumberOfRows end
AND case @Excel when 0 then (@StartRow - 1) else @PageIndex end
编写一个查询,将首字母显示员工的名字大写和小写所有其他字母和部门没有。对于其名称的第二个字符介于'A'和'M'之间的所有员工,请给每个栏目一个适当的标签。 我尝试了一些不起作用的东西。我的工作代码为:
SELECT INITCAP(ename), deptno
FROM emp
WHERE ename LIKE BETWEEN ('_A%' AND '_M%');
如果您发布的代码或XML,** **请在高亮文本编辑器的线和编辑器工具栏上点击“代码”按钮(101 010)很好地格式化和语法突出它! – 2010-12-07 08:54:57
这没有任何意义。你想达到什么目的? – 2010-12-07 08:58:13