我试图使用一个依赖于变量的case语句来确定WHERE子句的一部分,但它不喜欢我正在做的事情。下面是我的查询(为了简化而修改)
DECLARE @SalesType VARCHAR(10)
SET @SalesType = 'Bulk'
SELECT CASE
WHEN fwsf.Customer_Cardlock_Customer = 'True'
THEN 'CFN'
ELSE 'Bulk'
END AS 'Prod Type'
FR
我有下表
CREATE TABLE public.like_log
(
id integer,
account_id bigint,
match boolean,
insert_timestamp timestamp with time zone DEFAULT now()
)
我有以下SQL查询
select count(*) from like_log where insert_timestamp >= (NOW() - INTERVAL '30 hours' ) AND account_id = 1105399
如何构造执行以下操作的
我试图从我的存储过程中获取一些数据。@ContactID是输入参数,用户单击“显示”按钮就会触发查询。因此,如果@ContactID为null,那么我希望返回整个表,当@ContactID有一些值时,我只想返回特定的行。谢谢
DECLARE @ContactID INT = NULL
SELECT *
FROM Contact C
WHERE C.PK_Contact IN (CASE WHEN @ContactID IS NULL THEN (SELECT PK_Contact FROM Contact) ELSE @ContactID END)
但我知道这个错误:
子查询返回的值超
我试图解决一个我似乎找不到容易解决的问题。我正在尝试编写一个查询,该查询使用大小写语句根据某些计数返回值。在同一个查询中,我还需要返回一个orderid,因为我需要将该查询返回的数据用于另一个查询。
以下是查询:
select CASE WHEN count(name) = 0 THEN '1' ELSE CONVERT(varchar,count(name) + 1) END AS box
, orderid
from order
where len(name) = 7
and orderid = 'XYZ'
group by orderid
上面的问题是
如果我执行简单的查询,则为:
select count(*) from emails
where id <= 0
它返回一行零。
但是,如果我按查询分组,则为:
select count(*) from emails
where id <= 0
group by emails.id
它不会返回任何行。
为什么行为不同,以及如何修改第二个查询以实现第一个查询的相同行为?
命令行输出:
sqlite> select count(*) from emails where id <= 0;
0
sqlite> select count(*) from emails whe
我有一个疑问:
select *,
case when p.amount is null then '1'
else (select count(1)
from Money_paid mp
where mp.post_id = p.id and mp.user_id = :user_id limit 1)
end paid
from Posts p
where p.id = :post_id
正如您所看到的,在else部分的case .. when函数中有一个子查
我使用条件运算符在where子句中使用多个参数。我编写了以下查询,在这种情况下,我不能使用in类。请指导我如何从case子句返回多个参数。
select * from cardimport
where
STATUS = CASE
WHEN STATUS = ''
THEN 'F'
ELSE STATUS
END
当状态在null中时,我想返回'F'和'V'。现在它只返回'F'
编辑的
select *
from CARDIMPORT
where STATUS = CASE
WHEN $P{status} = &
假设我有一个包含2列的表t:
a int
b int
我可以执行如下查询:
select b
from t
where b > a
and a in(1,2,3)
order by b
从外部提供1,2,3的地方。
显然,查询不能返回任何行。在这种情况下,我希望选择所有内容,就好像查询没有and a in(1,2,3)部分一样。也就是说,我想:
if exists (
select b
from t
where b > a
and a in(1,2,3)
)
select b
from t
where b > a
以下是我的查询:
SELECT
date,
(SELECT sum(sessions) as org FROM datatwo WHERE medium='Organic Search' GROUP by date),
(SELECT sum(sessions) as soc FROM datatwo WHERE medium='Social' GROUP BY date),
(SELECT sum(sessions) as dir FROM datatwo WHERE medium='Direct' group
SELECT ir.objectid,ir.objecttype,ir.name,ir.email,ir.createdate,
CASE objecttype
WHEN 1 THEN (select friendlyurl
from locations
where id = ir.objectid)
END as objecturl
FROM inforequests ir
WHERE createdate > '1/1/2014'
order by CreateDate asc
此查询为我返回10行,但1行对列objectur
我在这里有一个疑问:
SELECT
Q.Question_ID,
Q.Question,
Q.Department,
CASE WHEN C.selected = 'true' THEN CAST('true' AS BIT) ELSE CAST('false' AS BIT) END AS Selected
FROM TPM_Questions_Default AS Q
LEFT OUTER JOIN customerQuestions AS C
ON Q.Question_ID = C.Q
我相信这有一个我找不到的非常简单的答案……我在一个数据库中有一个简单的层次结构,其中每一行都有一个ParentId。如果为ParentId IS NULL,则它是根元素。我有一个存储过程:
CREATE PROCEDURE GetByParent @parentId int
AS BEGIN SELECT * FROM TABLE1 WHERE ParentId = @parentId END
如果我发送一个整数,它可以很好地工作,但如果我发送NULL,它将变成ParentId = NULL,这在ANSI中不起作用。我知道有COALESCE(@parentId, ParentId),但当使用@
给定以下查询:
SELECT dbo.ClientSub.chk_Name as Details, COUNT(*) AS Counts
FROM dbo.ClientMain
INNER JOIN
dbo.ClientSub
ON dbo.ClientMain.ate_Id = dbo.ClientSub.ate_Id
WHERE chk_Status=1
GROUP BY dbo.ClientSub.chk_Name
即使在WHERE子句中筛选了行,我也希望在聚合中显示行。
例如,这个jpql查询-
@Query("SELECT account.name, account.type From AccountEntity account WHERE account.id=:accountId")
getAccountNameById(@Param(accountId) int accountId); //i know Spring Data Derived Query can handles this automatically - but lets not use this for this discussion.
在上面的jpql查询中,如果没有
我有一个表,其列只包含数值1、2和3的多次出现。
SELECT * from table1 where column_name=1
SELECT * from table1 where column_name=2
SELECT * from table1 where column_name=3
我是否可以将这些查询设置为单个查询,因为从单个表中为单个需求调用3 sql select查询语句看起来很尴尬。如果表对每个条件至少有一行,我需要做一些事情。我使用了以下查询:
SELECT *
from table1
where column_name IN (1,2,3).
它返回数据,即使
当查询不返回所选列之一的任何结果时,我试图显示默认值“Other”。我给你举个例子。
此查询返回os(agent) SO的空值(在第一行中):
select country, os(agent) SO, count(*) from clicks_data
where country is not null and os(agent) is not null
group by country, os(agent);
输出:
ZA 4
ZA Android 4
ZA Mac 8
ZA Windows 5
相反,我想得到这样的结果:
ZA Others
定义是这样说的:
当SET ANSI_NULLS为ON时,即使column_name中有NULL值,使用WHERE column_name = NULL的SELECT语句也会返回零行。即使column_name中存在非NULL值,使用WHERE column_name <> NULL的SELECT语句也会返回零行。
这是否意味着此查询中将不包括空值?
SELECT Region
FROM employees
WHERE Region = @region
或者,ANSI_NULL只关心像这样的查询(其中WHERE包含特定的单词NULL)?
SELECT Region
FROM em
这是我目前所拥有的(它不工作): select MOCKSTEMS.WORD_ID,
MOCKSTEMS.STEM_ID,
MOCKSTEMS.LABSTEM,
MOCKSTEMS.LABSTEMCATEGORY,
MOCKLEMMAS.LEMMAFORM,
MOCKSTEMS.LEMMA_ID,
MOCKWORDS.ORIGINALWORD,
MOCKSTEMS.CONTAINEDIN,
COUNT(*) as SAMEVALUE from MOCKSTEMS where CON
我很确定这是一个隐式转换,但我无法找到有关它的信息。
假设我有这个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 :当存在时选择
简单的实际问题:我有一个表const_a,它包含大量的行和列。当我调用SELECT A, B, C FROM const_a WHERE restrictive_conditions时,我获得了我想要处理的所有行和我唯一需要的列。
行按列A分组,值在列C中,选项在列B中。我的目标是从至少有一行C值的所有A组中获取所有的B值,比如'v'。
第一个查询是:
SELECT C FROM const_a
WHERE restrictive_conditions
AND A IN (SELECT DISTINCT A FROM const_a WHERE B LIKE 'v
我现在卡住了..。
我有四种类型的发票,需要不同的字段.
现在我在尝试类似..。
SELECT
CASE WHEN EXISTS (SELECT * FROM invoices WHERE type ='inv') THEN
(SELECT a,b,c FROM invoices)
WHEN EXISTS (SELECT * FROM invoices WHERE type ='credit') THEN
(SELECT d,e,f FROM invoices)
end
from invoices
这不
请参阅以下查询:
SELECT SUM(n) AS SUMVAL FROM (values(3),(4)) AS tbl(n) WHERE 1=0
因为我提供的谓词是false,所以我假设它返回一个空的结果集(0行)。但是它返回一行空值。是虫子吗?或者对这种行为有一个有效的解释。
如果删除聚合函数,就会得到一个空的结果集,如预期的那样:
SELECT n AS VAL FROM (values(3),(4)) AS tbl(n) WHERE 1=0
为了说明清楚,如果删除false谓词,则查询将返回2行,值为3和4,用于列“VAL”
SELECT n AS VAL FROM (values(3
曲目Id是我的应用程序中的可选字段。情况1:如果我传递了有效的跟踪id,它应该返回相应的行。情况2:如果传递了无效的跟踪id,则不应返回任何行。情况3:如果没有传递跟踪id,则应返回所有行
DECLARE @transaction_ID INT
SELECT @transaction_ID = Transaction_ID FROM myTable WHERE TRACK_ID= @Track_Id
我的where条件是:
WHERE (@transaction_ID IS NULL OR myTable.Transaction_ID = @transaction_ID)
我有三张桌子:临时表、产品表和饲料表。我将举个例子:
select ri.id from temp ri
inner join product i on ri.id = to_char(i.val)
inner join feed f on f.product_id = i.product_id
where i.status = 'Finished'
and f.type = 'Type'
group by f.feed_id, ri.id
having COUNT(f.status = 'SUCCESS') < 1;
因此,我试图从具有t
我有三个表,我想用另一个表列中的组来计数每一行。
问题是,当没有找到记录时,组计数将不会返回任何内容。
因此,我希望为每个未找到记录的组添加空值。
以下是查询:
select monster.monster_name,count(*) as count
from monster right join monster_ability
on monster.monster_id= monster_ability.monster_id where
isnull(monster_ability.used)
group by monster.monster_id
这是小提琴:
我希望结果应
我想在where子句中使用case语句,但在下面的查询中遇到错误。
where
(r.WeekId=@WeekId or @WeekId is null) and
(ShiftId=@ShiftId or @ShiftId is null)
and (placeid=@PlaceId or @PlaceId is null)
and (r.StatusId=3)
AND
CASE WHEN @day = 1 THEN ((firstday=@time and (allocateddays is null or NOT (AllocatedDays LIKE '%
我需要填充一个List<string>,但是当我的查询返回一个空值时,这个列表中不会创建任何空字符串。
var maskObj = (from m in context.sistema_DocType_Index
join n in context.sistema_Indexes on m.indexId equals n.id
where m.id == docTypeId
select new maskModel
{
m
我打算让一个新的结果表列显示WHERE子句的结果,而不是只检索满足WHERE子句的行。例如:
ColA ColB ColC NewCol
xxxx xxxx xxxx 1 # where clause is true for that row
xxxx xxxx xxxx 0 # false for that row
xxxx xxx xxx 0
....
如何在MySQL中设计这样的查询?
我正在尝试获取一个包含布尔标志的记录:如果特定结果集中的一列至少有一个非空值,则为true;如果所有值都为NULL,则为false。
结果集的样本数据
SELECT "my column 1", "my column 2", "my column 3", "my column 4", "my column 5"
FROM my_data
WHERE date BETWEEN :start AND :end
"my column 1" "my column 2" "my
这是我的简单查询。如果我查询一个不存在的记录,那么我将一无所获。
SELECT
CASE WHEN table1.column1= @column1 THEN 'XX'
ELSE 'YY' END from table1 where table1.column2=@column2
它不返回选定的行。
我试过ISNULL() .But没有纠正
我要回YY
有人能帮帮我吗..!提前谢谢!!
嗨,我正在尝试运行这个查询,但是在where语句中,大小写出现了一个错误。我想要做的是,如果i_id is >= 284将cnint <=65追加到查询后,则将and添加到另一个查询中。此查询位于存储过程中。
Select cnint as Id, cnabbv as Code, rtrim(cnname) as Name, i_id as CId, cntry as CCode
from money.country where cntype = 1 and (CASE
WHEN i_id
运行以下查询时
UPDATE Invoices
SET PaymentTotal = 1
FROM Vendors
WHERE Vendors.VendorID = 34 -- true for some row
Server更新发票中的所有记录。但是,当条件与供应商表中的任何行不匹配时:
UPDATE Invoices
SET PaymentTotal = 1
FROM Vendors
WHERE Vendors.VendorID = -34 -- false for all rows
没有行被更新。为什么?
编辑:--这是一个完全学术性的问题,,我理解这不是编写查询的理想方式。
我是MySQL的新手。
--我用它来更新具有不同值的多个行,在一个查询中:
UPDATE categories
SET order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
我正在用JasperReports设计一个iReport报告,我的查询如下:
select * from TABLE_NAME where COLUMN_NAME = $P{PARAMETER_NAME}
当我试图使其成为通用的时,即当参数未被传递时,我的问题就开始了,我希望查询能够在不过滤的情况下从表中获取所有数据。我尝试将参数的默认值设置为"all(PARAMETER_NAME)",但这只在引用$P!{PARAMETER_NAME}参数时起作用,这意味着参数值将被视为查询的一部分,因此查询将变为
select * from TABLE_NAME where COLUMN_N
嗨,我在试图达到3的值时遇到了问题,因为我的查询不承认使用'IN‘子句选择两个国家
( a)这是我的简单表格来源:
id = country
1% CL
2-溴
b)这是我的sql查询:
SELECT
(
CASE
WHEN country ='CL' THEN 1
WHEN country = 'BR' THEN 2
WHEN country IN ('BR','CL') THEN 3
ELSE 0
END) AS result
FROM countries
WHERE countr