我使用的语句如下所示,并得到以下错误:
选择失败。3771:案例表达式的时间从句中的非法表达。
我最好能从泰拉蒂那里得到希望。SQL Server可以做到这一点,但Teradata不能。我如何解决这个问题?有解决办法吗?
sel ( CASE
WHEN EXISTS ( sel '1' from VolatileTable Dtb1 where Dtb1.c1=FACT_Table_5MillionRows.C1)
THEN "FACTTablew5MillionRows"."CustomColumName"
EL
当我尝试下面的代码时,它返回附加的错误代码。
select acct_key,
(case when acct_key in (
select acct_key
from table_A
)
then 1 else 0 end) as acct_indicator
from table_B;
作为单一语句执行。失败的804 : 08S01数据包传输失败12:01:18 CDT
我有一个If语句块,类似于下面的语句块,它与错误-PLS-00103失败:遇到符号"SELECT“时,期待下列.
Begin
If (select count(*) from Table1) > 0 then
dbms_output.put_line('Test');
end if;
end;
我有类似的案例陈述,效果很好。
select
case
when (select count(*) from Table1) > 0
then 2
else
1
end
from du
需要关于阿帕奇方解石的建议。我们有一些SQL查询运行在Teradata上。现在,我们希望在Hadoop/Spark上运行这些sql查询(按原样),也许使用Apache方解石。
我们在Spark (2.6.3)中和Apache方解石中尝试了这些SQL查询,但很少有查询不运行。问题是,如果我们定义一个派生变量(AS),并试图在相同级别的同一查询中使用它,那么它在SparkSQL和方解石中不起作用,而是在Teradata中工作。示例查询:
select EMPNO, sum(deptno) as sum_dept,
case when sum_dept > 10 then 1 else
我使用SQL参数来允许用户使用视图中的下拉列表创建自己的SELECT查询。参数值使用MVC控制器中的实体框架从视图传递给存储过程。
我试图避免动态SQL,因此我有几个选项可以这样做。
下面是我最终选择的方法:
@topLeftInput varchar(100),
@topRightInput varchar(100)
AS
BEGIN
Select * from test
where
CASE @topLeftInput
WHEN 'BasicRetu
在用CASE语句执行查询时,我面临一个问题。根据我的情况。),我想执行不同的SQL语句。
有问题的示例查询如下:
select case
when char_length('19480821') = 8
then select count(1) from Patient
when char_length('19480821')=10
then select count(1) from Doctor
end
例外:
错误脚本行: 1-5
关键字“select”附近的不正确语法。
Msg: 156,级别: 15,州
目标是在Teradata中创建多个数据范围时用例。
我在Teradata中的代码是:
select
case when a <= 5 then b
when (5 < a < 6) then c
else 0 end
from datadate
列a包含诸如1、2、3等数字。
错误标志显示在第一个<,因为SQL期望一个:‘.’日‘,’小时‘
如何在Teradata中执行数字比较?当我尝试使用比较符号(如<,>、<=、Teradata )时,总是假定我在比较时间/日期。
我在SQL Teradata工作。 我喜欢计算有多少行(客户端)在"amount“列中有四舍五入的值(例如,表示140.00而不是157.76等等)。我使用的代码如下: select
client_id,
count(amount mod 1 = 0)
from table
group by client_id 然而,我有一个错误,比如:SELECT Failed. 3706: Syntax error: expected something between an integer and '='. 我能做些什么?
我正在将SQL从Redshift移动到AWS Athena,但我遇到了麻烦,因为SQL给了我错误。 SELECT abc_name AS bca_name,
CASE
WHEN name = 'aaa' THEN 'AAC'
WHEN name = 'bbb' THEN 'BBA'
WHEN name = 'ccc' THEN 'CCB'
END AS abc
FROM master_table
WHERE abc IS NOT NULL; 这个SQL给了我一个错误:它告诉我没有abc
我有一个下面的PostgreSQL查询:
WITH RECURSIVE disease_tree AS
(
SELECT ref_disease_id, uid, parent, level, NULL AS subtype, NULL AS specific_subtype
FROM ref_disease
WHERE parent IS NULL
UNION ALL
SELECT d.ref_disease_id, d.uid, d.parent, d.level,
CASE
WHEN d.level = 2 THEN d.uid
ELSE dtr.s
而不是做:
select count(*) into l_count from mergetest where a = 1;
case l_count
when 0 then
insert into mergetest (a,b) values (1,1);
when 1 then
update mergetest set b = b + 1 where a = 1;
else
NULL;
end case;
我想去掉局部变量l_count,而是这样做:
case select count(*) from mergetest where a =
我需要从Log表中选择所有数据,并在情况下导入数据
如果UserGrade =1,这是Admin用户,我需要按Log.User选择Admin
如果UserGrade =2,这是教师用户,我需要按Log.User选择教师名称
如果UserGrade =3,这是“学生用户”,我需要按Log.User选择学生名
我试试这个
select L.[UserID],L.[UserGrade],L.[Operation],L.[OpDate],
case
when L.[UserGrade]=2 then (select teacherNAME from Teacher ,[Log] where t
我正在尝试用编写一个查询,并得到以下错误
"IN/EXISTS predicate sub-queries can only be used in Filter/Join and a few commands"
这是我正在使用的代码。
SELECT id,
(CASE WHEN id in (SELECT id from aTable) THEN 1 ELSE 0 END) as a,
(CASE WHEN id in (SELECT id from bTable) THEN 1 ELSE 0 END) as b,
(CASE WHEN id in (S
在其他编程语言中,我们可以这样做: A = 5
B = A + 7 但是任何人都知道如何在SQL中做到这一点,就像这样: SELECT
(CASE WHEN (CASE WHEN t.[Id] IS NULL THEN 0 ELSE 1 END) = 1 THEN a.[123]
ELSE a.[432] END) AS 'Points',
@'Points' + 5 AS 'FinalPoints' ---Does any way to do this
FROM DeliveryOrder AS do
我使用的是SQL Server 2008。我有以下问题。我喜欢做的是,当有记录存在时,我喜欢将实际日期分配给'N/A‘,否则我希望它是手头的CreatedBy日期。
select ActualDate = (CASE
WHEN EXISTS
(select NeedHand from Truck
where Truck.NeedHand = 0 and Truck.ID = '34343')
我正在尝试使用case来改变在where子句中检查的值,但我得到了错误:
关键字'CASE‘附近的语法不正确
SQL Server 2005
select *
from table
where ((CASE when adsl_order_id like '95037%'
then select '000000'+substring(adsl_order_id,6,6)
ELSE select adsl_order_id
END)
not in (select mwebID from
我在MS Access中有以下SQL语句-
WITH
qryAwayMatches AS (SELECT MATCHTEAM.FOOTBALLMATCHID, MATCHTEAM.TEAMID, MATCHTEAM.GAMETYPE, MATCHPROTOCOL.MATCHTEAMID, MATCHPROTOCOL.GOALNUMBER,
MATCHPROTOCOL.YELLOWCARDNUMBER, MATCHPROTOCOL.REDCARDNUMBER FROM MATCHTEAM LEFT JOIN MATCHPROTOCOL ON MATCHTEAM.ID = MA
我很确定这是一个隐式转换,但我无法找到有关它的信息。
假设我有这个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语句中使用一个变量来确定条件组,如下所示:
group by
case when (@GroupByFirst is not null) then a.Name else b.Name end
不幸的是,我得到了一个错误,a.Name是
invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
有什么办法让它起作用吗。忘了提到,SQL是存储过程的一部分,但我相信它不会有任何区别。
我的Teradata查询在一个表中查找所有唯一的财政年度/财政周组合,并按时间顺序排序:
select
fiscalyear,fiscalweek,
fiscalyear||fiscalweek as yrwkperm
from table
qualify count(*) over (partition by yrwkperm rows unbounded preceding) = 1
order by fiscalyear,fiscalweek
然后,我使用生成的数据集,并添加另一列,该列指定每周的时间顺序,但只是行号,因为我已经按fiscalyear,fiscalweek排序了:
然后
我正在使用以下SQL查询..
SELECT *,
CASE
WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id
WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id
END as from_user_id
FROM messages JOIN users ON from_user_id=users.id
但是,如何在JOIN语句中使用from_user_id呢?它似乎不起作用。
我正在尝试更新销售分析多维数据集中的以下查询段。我对SQL不太熟悉。
第一个CASE语句的工作原理是--当OINV.Canceled = 'Y‘时返回一个负数。
CASE OINV.Canceled WHEN 'Y' THEN - INV1.LineTotal
ELSE INV1.LineTotal END AS LineTotal,
CASE INV1.StockSum WHEN 0 THEN INV1.LineTotal
ELSE INV1.StockSum END AS SaleValue, INV1.GrssProfit
我试图实现的是,当SaleValu
我在Teradata有两张桌子- "a“和"ch”。表ch包含2列"amt“和”代码“。在表"a“和"ch”之间是左联接。在SELECT部分,我试图对amt值进行求和。但是,当"code“属性有一个特定的值时,它只能占用"amt”值的70%。
这就是我尝试过的:
SELECT SUM
(
CASE WHEN ch.code IN (SELECT code from ...)
then 0.7*ch.amt
)
else ch.amt
END
我试图运行这个简单的查询,但是它甚至没有解析
Msg 156,级别15,状态1,第2行语法不正确,靠近关键字“中间”。
查询是:
select
case DMProject.dbo.TypeFourTraining.Column2
when Column2 between 181 and 360 then '181-360'
when Column2 between 0 and 180 then '0-180'
END as score
from DMProject.dbo.TypeFourTraining
对Colum
看在上帝的份上,能有人解释一下这里发生了什么吗?我正在进行一些存储过程错误修复工作,经过大量的斗争之后,我能够发现这个奇怪的bug发生在哪里,所以为了演示,我做了一个简单的示例。
案例1
DECLARE @test VARCHAR(45) ='0001'
SELECT CASE 0
WHEN -1 THEN ''
WHEN 0 THEN @test
WHEN 1 THEN 12345
END AS 'output'
案例2
DECLARE @test VARCHAR(45) ='0001'
SELECT CASE 0
WHEN -
想象一下全球各地的人们访问google网站的次数(ID、名称、位置、google (varchar) )我想要查询的结果如下所示
Name : No.of times : Location : Google Website
Joe : 2 : Singapore : google.com.sg
Kim : 3 : Japan : google.com.jp
只是我的两个cents.....Will下面的查询对吗?
SELECT Name, Count(Name), Location, CASE WHEN Locati
当我尝试使用名为as Ticket的CASE表达式的结果执行group by时,TOAD失败,并指出Ticket它不是有效项
SELECT
CASE WHEN ( amt_1 >= 10000000 ) THEN 'R100000'
WHEN ( amt_1 < 9000000 and amt_1 >= 8000000 ) THEN 'R090000'
WHEN ( amt_1 < 8000000 and amt_1 >= 70
我正在尝试创建一个SQL查询,它执行以下操作:
SELECT
CASE
WHEN a + b IS NULL a
ELSE b
END AS derived,
c / derived as new1,
sum(derived + d) as new2
FROM mytable
JOIN ...
WHERE ...;
然而,我遇到的问题是,它看起来没有办法在SELECT中实际引用较早的别名。在SQL中解决这个问题的惯用方法是什么?
我有一个数据表,其中的通行证和失败记录了几个星期。
我想数一下每周尝试的次数,以及通过和失败的次数,然后取这些通行证和失败的总和作为检查。
SELECT week,
COUNT (Week) as weekcount,
sum(case when result = 'pass' then 1 else 0 end) as 'passcount' ,
sum(case when result = 'fail' then 1 else 0 end) as 'failcount',
sum(
我在SQL server 2012中遇到了这样的情况,我需要根据变量查询表中的不同列。因此,我有一个表,其中的列有一个bld_type字段和3个特定于年份的附加列。包含年份的列包含A或I。
因此,表是这样设置的
测试表
bld_type bld_2015 bld_2016 bld_2017
123 A A I
124 A A I
126 I A I
我有一个存储过程,它将根据项目产生的年份将从外部来源获得的变量与bld_type进行比较。
我已经尝试过
我的目的是检索转换为CLIENT_CODE的所有BigInt,并将其与where子句中作为参数传递的值从400行sql查询中进行比较。当执行下面的代码时,我会得到以下错误消息:
来自sql server的消息错误8114:“将varchar转换为bigint时出错”。
测试代码:
select CASE when (len (CLIENT_CODE) > 2 and isNumeric(CLIENT_CODE) = 1)
then (CAST(SUBSTRING(TAB.CLIENT_CODE, 1, LEN(TAB.CLIENT_CODE)-1) AS BIGI
我正面临SQL方面的挑战。我有以下查询:
SELECT *
FROM Books
WHERE
Categories IN ('Fiction', 'art') OR
Language IN ('en', 'de') OR
Country = 'DE'
我需要看看结果,如果它们至少等于这些因素中的两个,就会被接受,而不会被选中。
如果一本书有Category = Fiction,Language = FR和Country = DE
=> pass
一本Category = History
如果C列包含字符串“ebook”,则需要从A列中选择SQL查询。否则,从B列中选择。
所以,就像:
IF (Table.ColumnC = "ebook") SELECT Table.ColumnA AS Publisher
ELSE SELECT Table.ColumnB AS Publisher
如果我有这样的查询
SELECT date_trunc('day', assigndate)e,
count(CASE WHEN a.assigneeid = 65548
AND a.assigneeid IN
(SELECT userid
FROM groupmembers
WHERE groupid = 65553) THEN 1 ELSE NULL END) assigned,
count(CASE WHEN a.assign
我有一个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
我刚刚把我的网站上传到Heroku,但是我在我的一个控制器中发现了一个错误。显然,我的postgres代码有语法错误。这在sqlite3中有效,但当我将其转换为postgres时,出现了语法错误。
@cars=Car.find_by_sql("SELECT cars.*, CASE WHEN EXISTS (SELECT book_cars.* FROM book_cars WHERE book_cars.car_id=cars.id AND book='t') THEN 'TRUE' ELSE 'FALSE' END AS
这是我的桌子:
我正在上一个关于SQL的Udemy的在线课程,这个视频有这个代码,并且正在运行。我不知道当我运行它时,为什么会出现以下错误。我很感谢你的帮助。代码应该返回每个区域中每个年龄组的数目。
select * from dbo.tblCustomer;
select Region,
case when Age>54 then 'old'
when Age<36 then 'young'
else 'mid' end as age_group