在SQL和PL/SQL中,我们可以有一个表达式,如下所示:
y := case x
when 1 then 'foo'
when 5 then 'bar'
when 7 then 'baz'
else 'wak'
end;
我在javascript中可以想到的这种类型的最简单的表达式是使用嵌套的三元操作符,如下所示:
y = (x==1)
? "foo"
:( (x==5)
? "bar"
:( (x==7
我有两个表,table1和table2,我正在使用
insert into table1
( Col1,
Col2,
Col3
)
select
( ColA,
ColB,
ColC
)
from
table2
但是Col3和ColC之间的逻辑是这样的:
if ColC = 'A' then Col3 = Y
else Col3 = N
SQL是什么,我使用的是SQL Server 2005。
SQL2005和/或SQL2008在T中是否存在任何内置的聚合,用于Contains或IfAny或其他什么?组中任何值等于值的东西?类似于Max(xyz)=value,但不限于最大值。
Select custID, case when Min(ProductGroup)= "A" then 'Have Ordered Group A' else 'Haven't Ordered Group A' end hasOrdered
from orders
inner join products on ordPoductId = productI
我正在尝试使用case语句将Sum添加到数据项。我正在尝试从下面的SQL查询在cognos中创建结果。
Select
,SUM(CASE WHEN reas_desc = 'misapplied funds' THEN 1 ELSE 0 END) AS Misapplied
,SUM(CASE WHEN reas_desc = 'lump sum payment' THEN 1 ELSE 0 END) AS Lumps
,SUM(CASE WHEN proc_desc = 'title/registration' THEN 1 EL
我正在编写一个存储过程来查询数据库。
参数被传递给where子句的过程。
我似乎找不到对SQL IF和CASE语句优缺点的描述。谁能给我一个理由,为什么我应该使用其中一个而不是另一个,或者如果我完全走错了方向?
方法1:
DECLARE @SQL_WHERE_QUERY NVARCHAR(MAX) = '';
IF @SQL_PARAM IS NOT NULL SET @SQL_WHERE_QUERY = @SQL_WHERE_QUERY + ' AND [COLUMN_NAME] = '''+@SQL_PARAM+'''
我正在面对一个问题,同时从桌子上得到不同的记录。
我的问题是:
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
ORDER BY
CASE WHEN name LIKE 'S%' THEN 0 else 1 end,name
错误: SQL01214按表达式排序无效
错误细节:
我尝试过编写子查询和相关的子查询,但没有成功。
需要帮助才能获得备用SQL查询。
嗨,我被困在下面的查询中,我已经为访问和正常工作编写了这个查询。但是当我在SQL 2005中运行它时,它会给我带来错误(不正确的语法靠近关键字'IS')。
我也经历过类似的问题,但我的问题并没有得到解决。
以下是Access查询。
select iif(ISBN IS Null,"1","0") as OK from products
请提供SQL 2005版本。
这可能是一个基本的查询,但我对sql并不熟悉。
提前谢谢。
在Oracle11g R2的中,的文档指出:
不能为每个return_expr和else_expr指定文字NULL。
但是,以下SQL执行时没有问题,并返回null:
select case 'test'
when 'test' then null
else null
end "Null Test"
from dual;
这是文档的问题还是我遗漏了什么?
我正在创建一个SQL查询,其中我需要一个条件where子句。
应该是这样的:
SELECT
DateAppr,
TimeAppr,
TAT,
LaserLTR,
Permit,
LtrPrinter,
JobName,
JobNumber,
JobDesc,
ActQty,
(ActQty-LtrPrinted) AS L,
(ActQty-QtyInserted) AS M,
((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
FROM
以下SQL查询是在SQL Server 2017中执行的。我希望当UtenteCliente.CostoFatturazionePersonalizzato的值为0或使用Utente.CostoFatturazione的值配置为null时,我使用下面的查询来执行此操作,但结果总是返回null。
我该怎么做呢?
SQL查询:
SELECT
IIF (UtenteCliente.CostoFatturazionePersonalizzato < 0
OR UtenteCliente.CostoFatturazionePersonalizzato IS NULL,
我是SQL Server的新手。我的编程背景是SAS。我目前使用的是SQL Server Management Studio v18.5。我正在尝试确定如何解决几个问题:
我希望将新变量赋给现有列,具体取决于这些列的值。我读过关于使用set和select声明变量的文章,但我在将这些信息转换为我需要做的事情时遇到了问题。我有一个包含数千条记录的视图。我希望将变量逻辑应用于视图中的每条记录。期望的结果是,我创建了一个新视图,其中只包含新的变量名和其他相关数据,不包括原始列名。
在SAS中,我的代码将如下所示:
If newctry<>' ' then count
我有这个sql,
IF(@ID = '')
BEGIN
SET @ID = NULL;
END
IF(@Name = '')
BEGIN
SET @Name = NULL;
END
IF(@PhoneNumber = '')
BEGIN
SET @PhoneNumber = NULL;
END
IF(@Price = '')
BEGIN
SET @Price = NULL;
END
IF(@NewPrice = '')
BEGIN
SET @NewPrice
假设你有一个“喜欢”的评分记录。 user document timestamp 您可以查看每个用户的评分计数 select user, count(user)
from rating
group by user 如果您想要计数,但限制在某个数字,如100,该怎么办 select user, min(100, count(user))
from rating
group by user 如何在sql和django queryset中做类似的事情?
我有一个列,其中包含扫描条形码的字符串。我希望找到一个特定的匹配,并在一个新的列中返回字符串' match‘和'noMatch’
条形码的正则表达式是
'0-9{5,8}\%0-9*\%‘
13412432%10000%
我的疑问是
SELECT
report."barcode" SIMILAR TO '[0-9]{5,8}\%[0-9]*\%',
(CASE report."barcode" WHEN (report."barcode" SIMILAR TO '[0-9]{5,8}\%[
我有一个相同的查询,但需要根据参数稍作更改。我该怎么做呢?
就像这样
CASE WHEN @LocalDetailLevel = 'master' THEN
BEGIN
...
END
CASE WHEN @LocalDetailLevel = 'size' THEN
BEGIN
...
END
CASE WHEN @LocalDetailLevel = 'color'
BEGIN
...
END
然后,在每个begin/end语句中是一个完整的查询,其中包含select、from和所有内容。这是正确的做法吗?或者我必须使用if语句?如果是这
SQL大小写检查同一列存储过程中的两个条件sql server不工作。
SELECT *
FROM TestTable
WHERE CASE WHEN ISNULL(column1,0)=0 THEN ISNULL(OfficeFlg,0)=1 ELSE ISNULL(column2,0)=1 END
我有一个非常大的存储proc,它在最后生成一个表。我需要这个表是动态排序的指定列和方向。有没有办法做到这一点,而不必将我的SQL放入字符串中,然后执行该字符串?proc已经很庞大了,大约有15条IF语句,所有这些语句都生成相同的表,但根据命中的IF语句的不同,数据会有所不同,总共大约1200行。总共有12列,显然有两个排序方向,所以如果我在@SortDirection和@SortColumn的每一列前面都放一条if语句,我将不得不用360条IF语句重写这个过程!
是否可以动态地完成此操作,而不必将其全部放入一个极其复杂的字符串中,然后执行该字符串?我使用的是SQL Server 2012。
sqlite是否支持select语句中的sql函数"if“?
例如
select if( length( a ) > 4 , a , ' ') as b
from foo
如果长度超过4个字符,则返回a。否则,它将返回‘’作为b
如果它确实支持select中的条件,那么应该使用什么语法?
我已经检查了,但是我看不到它。
我有一个类似这样的查询:
SELECT Column1, Column2, ...
FROM Table
WHERE (
CASE
WHEN Column1 = 'Value1'
AND Column2 = 'Value2'
THEN 'ok'
ELSE 'nok'
END = 'ok'
)
我知道我可以像这样重写条件:
SELECT Column1, Column2, ...
FROM Table
WHERE Column1
我有一个名为$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进行排
对于如何在同一个查询中用sql (例如用例)和/或格式化变量来短语if / into语句,我并没有任何高级的sql知识,因此我想知道是否有人可以帮助使用这段sas代码,并将其以正确的格式表述为sql:
data convert_code;
format date1 date 2 mmddyy8. code $4.;
set userid.code; (this table is pulled from oracle)
if ID='X' then P='A'; else P='B';
If CAT in ('1','
我有一个关于SQL的问题。我用SQL创建了一个表,其中只有一列包含两个人的名字(比如John和Matt)。稍后,我使用ALTER TABLE向表中添加了一个新列。此列将包含这些人的姓氏。 我的问题是,如果我的表中已经包含了几个人,是否有一个命令可以一次输入所有人的姓氏,而不是为每个人编写一个命令,如下所示: INSERT INTO table (Surname) VALUE (John's surname)和 INSERT INTO table (Surname) VALUE (Matt's surname)? 提前感谢 P.D.我尝试了这样的方法: UPDATE foo s
我无法派生以下表内容的SQL查询。
当我尝试下面的查询时,我得到了上面的输出。有人能帮我给出所需的查询吗?
select Name, count(Status) from mytable where Status='Open' group by mytable union
select Name, count(Status) from mytable where Status='Cleared' group by mytable