我有一个名为$var的PHP变量。我想对我的结果进行排序,因为我依赖于$var。这个方法很有效:
$sql = "
SELECT
myText1,
myText2,
someNumber
FROM myTable
ORDER BY
CASE
WHEN $var = 1 THEN myText1
WHEN $var = 2 THEN myText2
WHEN $var = 3 THEN someNumber
END";
但是当$var是3岁的时候,我需要用DESC按照someNumber进行排
我必须在Sybase引擎上运行以下两个查询:
SELECT COUNT(*) AS BTB_YES FROM FXMM_EVT_DBF WHERE M__INTID_ = '1.511' AND M_ISHEDGE = 1
SELECT COUNT(*) AS BTB_NO FROM FXMM_EVT_DBF WHERE M__INTID_ = '1.511' AND M_ISHEDGE = 0
由于我基本上选择了同一组信息,即:
SELECT M_ISHEDGE
FROM FXMM_EVT_DBF
WHERE M__INTID_ = '1.511
我正在使用VS 2012和SQL Server / SSIS。
我最初有一个SQL任务来检查表中的重复值:
SELECT COUNT(*) AS DupNI
FROM dbo.mytable
WHERE XMLFileID = ?
GROUP BY XMLFileID, NINumber
HAVING (COUNT(*) > 1);
?是因为我插入了一个参数值,并且查询的结果被分配给一个变量。如果有复制的话,它可以正常工作。
当没有副本时,我会收到这样的消息:
指定了单行结果集,但未返回任何行
因此,为了解决这个问题,我现在使用一个IF存在,如下所示:
IF EXISTS (SE
有人能帮助我理解为什么oracle db在使用/不带CASE语句时返回不一致结果。
SELECT NVL(CASE WHEN '' IS NULL THEN NULL ELSE NULL END ,TO_DATE('19010101', 'YYYYMMDD')) a,
NVL(CASE WHEN '' IS NOT NULL THEN NULL ELSE NULL END ,TO_DATE('19010101', 'YYYYMMDD')) b,
NVL(CASE WHEN '
我正在试图找出为什么我的case语句不起作用。可能是很简单的事。代码下面的错误。我不太喜欢使用w/ SQL。
case month(getdate())
when '1' then
select
'mmarks@fd.com' as EmailAddress,
'mmarks@fd.com' as SubscriberKey,
sum(case when isclaimed = 0 then 1 else 0 end) as 'Remai
我在SQL case语句中遇到了其他情况的问题。
在我的SQL表列中,L_Keyword2包含以下值,并且是varchar类型的。
YES,
LAND INCLUDED,
N/APPLICABLE,
3,
1.5,
NO,
4.5+,
OTHER,
NULL,
2,
1,
LAND LEASED,
0,
3.5,
N/A,
OE,
4,
2.5,
当我在case语句中使用此列时,如
SELECT
L_Keyword2,
CASE
WHEN class LIKE 'RE_1' THEN L_Keyword2 ELSE 0 END
FROM Myt
我在sql server中有一个简单的表:
DECLARE @tbl table( a int , b NVARCHAR(100), isCalcByA bit)
INSERT INTO @tbl
SELECT 1,'c',1
UNION ALL
SELECT 2,'d',0
好的。
如果我运行这个:
SELECT CASE
WHEN isCalcByA = 1 THEN a
ELSE b
END FROM @tbl
它会产生一个错误:
Msg 245,第16级,状态1,第9线
当将n
这是我的第一篇文章,我试图对这个问题进行彻底的搜索,所以如果它已经在其他地方发布了很多次,请接受我的道歉,但是我想知道是否有人在试图从结果集中删除NULLs时遇到了以下问题:
case Occurrence
when NULL then '0'
else occurrence
end as Occurrence,
case Aggregate
when NULL then '0'
else Aggregate
end as Aggregate,
这并没有对我的NULLs造成任何影响;然而,这样做的诀窍是:
case
create or replace FUNCTION macro_If_condition( p_1 varchar2 )
RETURN varchar2 SQL_MACRO is
v_sql varchar2(1000);
BEGIN
if p_1 is not null then
v_sql := q'[ select p_1 from dual ]' ;
else
v_sql := q'[ select 'NULLL' from dual ]' ;
我试图根据下面的SQL语句获得结果。它给了我“不正确的语法接近‘’”的错误.如果Saleflag为1,则在25-50之间用SalePrice显示结果,其他显示结果与价格在25-50之间。
Select
(
CASE
when Saleflag = 1 then (
cast(SalePrice as Decimal) >= '25'
and cast(SalePrice as Decimal) <= '50'
)
使用下面的SQL,但在where子句中获取case语句中的错误。
create procedure MyProcedure
@ApprovalFilter as nvarchar(50),
@BothPendingAndApproved as nvarchar(50)
Select
*
from
myTable
Where
data = "A"
and
case @BothPendingAndApproved
when 'Both' then Approval
我使用SQL参数来允许用户使用视图中的下拉列表创建自己的SELECT查询。参数值使用MVC控制器中的实体框架从视图传递给存储过程。
我试图避免动态SQL,因此我有几个选项可以这样做。
下面是我最终选择的方法:
@topLeftInput varchar(100),
@topRightInput varchar(100)
AS
BEGIN
Select * from test
where
CASE @topLeftInput
WHEN 'BasicRetu
我有一个按人分组的sql server结果。和数字是他们的每日数字和每月数字。
Person Team Daily Figure Month To Date
Tony Team 1 53 635
Dan Team 2 47 172
Tom Team 3 17 232
Simon Team 2 16 655
Ben Team 3
我在postgres中有一个表,其中包含已解析的地址信息。当我运行以下查询时,我得到了正确的结果:
select count(*) from address_table
where (mod(to_number(to_address_left, '99999999'), 2) = 0
and to_address_left <> ' ')
但是当我给它加上一个OR ..。
select count(*) from address_table
where (mod(to_number(to_address_left,
我试图使用以下查询进行排序:
SELECT * FROM client
ORDER BY
CASE $desired_colum_to_order
WHEN 'id' then `id`
WHEN 'name' then `name`
ELSE `id`
END
ASC
问题是,此查询将ID排序为字符串列,但它是一个整数主键。
结果依次为: 10,11,12,13,5,6,7,8,9
如果我执行以下查询,则MySQL命令是正确的:
SELECT * FROM client
ORDER BY
id
ASC
现在,结果是正确的: 5,6,7
我试着:
select 1>2 from dual;
但得到了:
ORA-00923: FROM keyword not found where expected
Oracle SQL中的列表达式有布尔类型吗?
我能做到:
select case when 1>2 then 'T' else 'F' end from dual;
起初,我试着比较日期字段,我发现最快的方法是得到不同的结果,并期待签署.
UPDATE我尝试了SIGN函数,我不知道它是否是特定于供应商的扩展:
select SIGN(1-2) from dual;
select SIGN
我试图在AS400中运行一个包含if-else语句的SQL,但它不起作用。我正在使用I Series Navigator创建一个视图,以便运行它。
SELECT IF FIELD1 IS NOT NULL THEN 'AAA' ELSE 'BBB' END IF
FROM LIB.TABLE1
我得到的错误是:
SQL State: 42601
Vendor Code: -199
Message: [SQL0199] Keyword IS not expected. Valid tokens: , FROM INTO. Cause . .
我试着不写为空,但结
我有一个SQL语句,它有一个来自SELECT的CASE,但我就是不能正确地使用它。你们能给我举个CASE的例子吗,案例是条件,结果来自案例。例如:
Select xxx, yyy
case : desc case when bbb then 'blackberry';
when sss then 'samsung';
end
from (select ???? .....
结果显示的位置
name age handphone
xxx1
目前使用以下SQL从同一列获取多个计数,但我的结果都是相同的。
SELECT
act.OWNER_LOGIN,
COUNT(CASE WHEN act.X_ACTIVITY ='Call' THEN 1 ELSE 0 end) AS YTD_Calls,
COUNT(CASE WHEN act.X_ACTIVITY ='Email' THEN 1 ELSE 0 end) AS YTD_Email,
COUNT(CASE WHEN act.X_ACTIVITY ='Turret' THEN 1 ELSE 0 end) AS YTD_Turret,
如果我运行像SELECT * FROM stuff WHERE something=NULL这样的语句,我将得到一个空的结果集。
我知道解决方案是使用something IS NULL。我还理解为什么: SQL将NULL解释为未知,如果某个事物是未知的,则它无法匹配其他东西,这是合乎逻辑的。
令我困惑的是结果集的意义。我一直明白你无法与something=NULL相匹配,那么为什么是可以接受的呢?这意味着,在某些情况下,人们可能会得到一个不同的结果?
或者,为什么SQL不接受something=NULL作为相当于IS NULL的成语?这并不是唯一没有文字解释的成语(比如count(*)和SEL
我有一个SQL查询:
SELECT column_1, column_2, column_3
FROM table_1 join table_2 ....
ORDER BY
CASE :expression
WHEN 'Column_1' then column_1
WHEN 'Column_2' then column_2
WHEN 'Column_3' then column_3
END asc;
在我的Java代码中使用,用本机查询调用它。表是这样定义的:
column_1 BIGINT(20)
column_2 VARCHAR(20)
COUNT(DISTINCT CASE WHEN DATEDIFF(d, ClientVisit.rev_timeout, ClientVisit.signature_datetime) = 3 THEN
CASE WHEN ClientVisit.multiple_flag = 1
THEN ClientVisit.rev_timein
ELSE ClientVisit.clientvisit_id END
END
数据类型
rev_timeout -小时间
rev_timein -小时间
signature_dateti
在以下脚本(请看这里的完整演示)中:
SELECT *
FROM Table1
ORDER BY
CASE WHEN Field1 IS NOT NULL
THEN 0
END
0的类型是什么?
如何解释0?它不是select列表中列的序号,因为select列表枚举以1而不是0开头。那么这是什么呢?
为了详细说明一下,请将上面的片段与下面的代码片段进行比较,这会产生一个错误:
SELECT *
FROM Table1
ORDER BY 0
“按位置排序”号0超出了“选择”列表中项目数的范围。
并将其与以下代码段进行比较,这会产生另一个错误:
SELECT *
F
DECLARE @a int
SET @a = 5
SET @a = CASE
WHEN @a >= 5 THEN 1
WHEN @a <= 5 THEN 2
WHEN a < 10 THEN 3
END
SELECT @a
@a值应为3,但为什么显示为1?
有人能解释一下它是如何工作的吗?
我在SQL面试中也被问到了同样的问题
我想知道为什么SQL Server CASE表达式总是位于Select语句和From语句之间,例如:
SELECT *,
CASE
WHEN score >= 94 THEN "A"
WHEN score >= 90 THEN "A-"
WHEN score >= 87 THEN "B+"
WHEN score >= 83 THEN "B"
WHEN score >= 80 THEN "B-"
WHEN score >= 77 THEN "C+"
WHEN sco
在红移SQL中--
我想做个类似的案子
case when first_name ilike 'p%'
then (the cell's value)
else null
end as p_names
所以如果我们有一个专栏:
| name |
+--------+
| patty |
| bryan |
| peter |
结果将是
| p_name |
+--------+
| patty |
| (null) |
| peter |
因此,基本上,如果满足这种情况,它只需在每个单元格级别上提取原始单元格的值。这个是可
我很确定这是一个隐式转换,但我无法找到有关它的信息。
假设我有这个SQL:
SELECT
CASE WHEN (SELECT 1 WHERE (1=1)) = 1 THEN 1 ELSE 0 END
我的子查询返回一行,因此与1相比较。这将导致我的情况是何时产生1输出。
即使我将子查询设置为不像下面的示例那样返回任何行,CASE语句也会返回0结果:
SELECT
CASE WHEN (SELECT 1 WHERE (1=0)) = 1 THEN 1 ELSE 0 END
SQL解释器是否在“空集”到0或1之间进行转换?
我不喜欢用这种比较。在我看来,最好像这样使用opinion :当存在时选择
除了可读性之外,在SQL中防止除以0错误时,使用CASE WHEN语句与ISNULL/NULLIF相比有什么显着的好处吗?
CASE WHEN (BeginningQuantity + BAdjustedQuantity)=0 THEN 0
ELSE EndingQuantity/(BeginningQuantity + BAdjustedQuantity) END
vs
ISNULL((EndingQuantity)/NULLIF(BeginningQuantity + BAdjustedQuantity,0),0)
我有这样的密码:
select
tbl.person
,COUNT(distinct tbl.project)
,if (tbl.stage like '%SIGNED%') then sum(tbl.value) else '0' end if as test
from
my_table tbl
group by
1
它返回给我一个错误消息:
SQL Error [42601]: ERROR: syntax error at or near "then"
我没拿到。正如我在文档中看到的,if语句语法似乎被正确使用
我犯了个错误,但我不明白为什么。这在SQL中有意义吗?
如果客户(或字段ValidNaming )的名称无效,则需要使用False/True填充列CommonLastName。
为什么这不管用?
Select
CommonLastName,
CASE COMMONLASTNAME
WHEN ((CommonLastName like 'Connect%')
OR (CommonLastName = 'Unknown', '', 'Null')) THEN 'False'
ELSE