我在使用 SQL 查询时遇到困难。我正在使用sqlite。
我有一张桌子expenses
。我正在尝试使用CASE
语句来选择和求和值。以下是一些示例数据:
这是没有得到我想要的查询...
SELECT e.category,
CASE
WHEN e.schedule ='None' AND e.created_at > '2014-02-01 00:00:00 +0000' THEN SUM(e.amount)
WHEN e.schedule = 'Daily' THEN SUM(e.amount)*28.000000
WHEN e.schedule = 'Mon - Fri' THEN SUM(e.amount)*20
WHEN e.schedule = 'Weekly' THEN SUM(e.amount)*4.000000
WHEN e.schedule = 'Every 4 Weeks' THEN SUM(e.amount)*1.083333333333
WHEN e.schedule = 'Monthly' THEN SUM(e.amount)*1
ELSE 0
END
AS totalValue FROM expenses e GROUP BY e.category ORDER BY e.category
Run Code Online (Sandbox Code Playgroud)
下面是查询返回的图片。
我想看到Housing
420 的总价值,这是因为有三条记录带有category
“住房”,其中一条schedule
记录为“无”(记录 …
我一直在搜索,在示例中一切看起来都很好,但实际上并非如此。我想根据金额计算加薪。出现缺少关键字错误。
SELECT o.operator_name,
o.salary,
(CASE o.salary
WHEN o.salary < 500 THEN o.salary * 1.35
WHEN o.salary >= 500 AND o.salary < 1000 THEN o.salary * 1.15
WHEN o.salary >= 1000 AND o.salary < 1500 THEN o.salary * 1.05
END) AS "Increase"
FROM operators o;
Run Code Online (Sandbox Code Playgroud)
我尝试使用 IF ELSIF,我得到“FROM 不是预期的地方”。
您好,请更正我的查询
select * from table S1
WHERE S1.stu ='12345'
AND S1.sem = (Select Case When col2 > col4 Then col2 Else col4 End From table2)
And S1.met1 in (case when (S1.sem = 1) then ('1', 'D', 'F' )
when (S1.sem = 2) then ('1', '5', '7', )
when (S1.sem = 3) then ('1', 'D', 'F' )
else s1.sem end);
Run Code Online (Sandbox Code Playgroud)
因为与表结合而应该使用case.我明白了
错误:缺少关键字
对于此查询
我的小型 SQL 查询只是将数据从旧数据库导入到新数据库。我的新数据库不允许ProjectNo
,ProjectName
或者LeaderID
是一个NULL
值,所以我的代码需要检查该值是否是NULL
,如果是,添加ProjectName
和LeaderID
(ProjectNo
是旧表的主键,所以不能是NULL
)的默认值。
据我所知,我已经正确地编写了 case 语句,但我不断收到以下错误:
无法将值 NULL 插入列“ProjectName”、表“ERP.dbo.Project”;列不允许空值。插入失败。
我也在使用 SQL Server 2008
INSERT INTO [ERP].[dbo].[Project] ([ProjectID], [ProjectName], [LeaderID])
SELECT
ProjectNo,
CASE
WHEN ProjectName IS NULL THEN 'Unknown'
END,
CASE
WHEN ProjectLeaderID IS NULL THEN 1
END
FROM
Multitech.dbo.Projects
GO
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个名为 Multiplier 的新列添加到名为 Trades 的现有表中。此列的行值将取决于 Trades 表中名为 Type 的另一列。如果 Type 不是“Equity”、“Corp”或“Option”,则需要从另一个名为 ContractSize 的表中查找该值。最后,我希望 Multiplier 列的数据类型为十进制 (7,3 )我的代码是:
ALTER TABLE Portfolio.Trades
ADD Multiplier decimal(7,3) AS
(
CASE
WHEN Type = 'Equity' Then 1
WHEN Type = 'Corp' Then 0.1
WHEN Type = 'Option' Then 100
ELSE
(SELECT ContractSize FROM Portfolio.ContractSize CS
JOIN Portfolio.Trades T
ON T.Identifier = CS.ContractSize)
)
Run Code Online (Sandbox Code Playgroud)
我在此代码上遇到两个错误:
消息 156,级别 15,状态 1,第 2 行 关键字“AS”附近的语法不正确。
消息 102,级别 15,状态 1,第 12 行 ')' 附近的语法不正确。
非常感谢一些指导。
我正在学习 psql,并且对 CASE 关键字非常困惑。
假设我有一张桌子“宠物”。
name | species | owner | gender | color
-------------+---------+--------------------+--------+---------------
Nagini | snake | Lord Voldemort | female | green
Hedwig | owl | Harry Potter | female | snow white
Scabbers | rat | Ron Weasley | male | unspecified
Pigwidgeon | owl | Ron Weasley | male | grey
Crookshanks | cat | Herminone Granger | male | ginger
Mrs Norris | cat | Argus Filch | female | dust-coloured
Trevor | toad …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
SELECT
t1.a
t1.b
CASE WHEN t1.c = Z THEN m
WHEN t1.c = Y THEN n
ELSE p END as m_or_n_or_p
FROM t1
Run Code Online (Sandbox Code Playgroud)
我可以添加吗
WHERE m_or_n_or_p = m
Run Code Online (Sandbox Code Playgroud)
最后以这种方式过滤我的查询还是我必须将其全部包装在另一个 SELECT 中?
我是C#的新手,并尝试使用Switch进行乘法的以下程序.该程序完全通过Switch案例,但相乘的结果不会显示在控制台中.你能帮忙吗?
using System;
public class Program
{
public static void Main(string[] args)
{
int _pLicense = 50;
int _sLicense = 100;
int _eLicense = 150;
String lType;
int nSeats;
Console.WriteLine("\n1.Personal License\n2.Startup License\n3.Enterprise License");
Console.WriteLine("Enter the license type");
lType = Console.ReadLine();
//lType = char.Parse(Console.ReadLine());
switch(lType)
{
case "1":
Console.WriteLine("Enter the number of seats");
nSeats = int.Parse(Console.ReadLine());
//Console.WriteLine(_pLicense);
int Cost = _pLicense*nSeats;
Console.WriteLine("Personal License Cost : $", +Cost);
break;
case "2":
Console.WriteLine("Enter the number of seats");
nSeats = int.Parse(Console.ReadLine());
//Console.WriteLine(_sLicense);
Cost = …
Run Code Online (Sandbox Code Playgroud) itemTable
如果iid
相关表上存在匹配的行,我正在尝试更新 a 上的列。
itemMeta
是一个 NoSQL 风格的表,表上iid
每一项都有重复的s,itemTable
是一个关系表。
update itemTable it
set hasAttributes = (select
case when select count(1) from itemMeta where (im.iid = it.iid)
then 'Y'
else 'N' end)
from itemMeta im
where (im.iid = it.iid)
Run Code Online (Sandbox Code Playgroud)
如何将列设置为Y
上itemTable
,如果有匹配的行iid
上存在itemMeta
?
我创建了以下选择查询来显示基于 if then else 使用的数据 CASE-WHEN-THEN
select id,name,
case
when rating between 4.0 and 5 then "very good"
when rating between 3.0 and 3.5 the "good"
else "Good Resort"
end as comment
from resort
order by id;
Run Code Online (Sandbox Code Playgroud)
执行时它给出了这个
错误
ORA-00904 : "Good Resort": 无效标识符
case ×10
sql ×9
sql-server ×3
oracle ×2
select ×2
alter-table ×1
c# ×1
exists ×1
insert ×1
mysql ×1
null ×1
ora-00904 ×1
postgresql ×1
psql ×1
sql-update ×1
sqlite ×1
sum ×1
where-clause ×1