我有一个关于我的脚本的问题,为什么我不能对子查询使用where子句( where counter = '1')
我这里有一个样品,请打开图片
SELECT effectiveDate,
(SELECT
(CASE
WHEN note='REGULAR LOGGED'
THEN log
WHEN description = description
THEN description
END)
FROM timesheet WHERE counter ='1'
) as Counter
如果我有这样的查询
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
我有一个简单的查询来将一条记录插入到一个表(P_Case表)中。我从表单(Case_Form)中的文本框中获取值。我在单击Case_Form中的命令按钮时执行查询。但是,执行失败,并且我得到错误“查询输入必须至少包含on表或查询”!
INSERT INTO P_Case (Case_Date, Case_Desc, Aff_Person)
VALUES (Forms!Case_Form![Case Date], Forms!Case_Form![Case Desc], (SELECT Person.ID FROM Person WHERE Person.National_ID=Forms!C
SELECT branches.brid,
COALESCE(a.cnt, 0) AS Assigned,
COALESCE(c.cnt, 0) AS Completed,
COALESCE(p.cnt, 0) AS Pending,
COALESCE(x.cnt, 0) AS Expired
FROM branches WHERE access = 'User'
LEFT JOIN
(SELECT brid, count(*) from task GROUP BY brid) a ON branches.brid = a.brid
LEFT JOIN
(SELECT bri
SELECT
CASE CR.claim_status
WHEN 'RC'
THEN (SELECT ins_clause_no
FROM tbl_rej_code_master RCM
WHERE CR.s_no IN (SELECT s_no
FROM claim_rejection_code_trans CRCT
WHE
下面的查询需要返回多个值
select
CASE WHEN LTRIM(RTRIM([Order].ClientProject_Id))!=''
THEN (SELECT StationeryClientProject.ImpFile from StationeryClientProject
WHERE StationeryClientProject.ClientProject_Id = [Order].ClientProject_Id)
ELSE (SELECT Stationery.ImpFile from Stationery
WHERE
在包含CASE...WHEN的查询中,我无法逐个解决组的问题。
你能帮我一下吗?
select ID,
CODE,
NOM AS TITLE,
level,
ID_PARENT,
CASE ID_PARENT
WHEN 1111 THEN 'MAIN'
ELSE
(
SUBSTR(
(
SELECT CODE FROM unit
是否可以在case子句中为when语句写入子查询
即。
SELECT colA, colB,
CASE WHEN (SELECT colA FROM tab2 WHERE tab2.colA = tab1.colA) THEN '1'
CASE WHEN (SELECT colA FROM tab3 WHERE tab3.colA = tab3.colA) THEN '2'
ELSE '0'
END AS colC,
...
FROM tab1
扩展问题:
是否可以基于该值列执行某些操作?(非常确定是的,但希望得到确认)
在我的SQL查询中,我有一个CASE子句。如何在where状态中使用来自情况的变量名称。这是我的查询
SElECT
a,
b,
CASE
WHEN AVG(CAST([x] as DECIMAL(9,2))) = 0
THEN 0
ELSE AVG(CAST([y] as DECIMAL(9,2))) / AVG(CAST([x] as DECIMAL(9,2)))
END AS z
FROM magic_table
WHERE z > 0
GROUP BY a,b
在这里,我不能抓住z在w
在本例中,我只使用了两个表。我正在检查哪个可能运行得更快,并且执行计划是相同的。这些查询的目的是查找与一个大于另一个记录的最大日期的记录相关联的最小日期。第一个查询更简洁(虽然它不允许DATEDIFF列,但第二个查询允许)。我觉得,从长远来看,当我有许多连接时,第二种方法编写查询的性能会更高。有没有关于哪种方法的一般规则,或者它是逐个案例的场景,你让优化器来解决它?
第一
select c.patid,min(c.admitDate) as minDiabetesDate
from clm_extract as c
inner join icdClm as ic on ic.c
我有一个疑问:
CASE WHEN T3.ID_NUMBER IN (20216) THEN 'Retired'
我想向它添加一个子查询:
CASE WHEN T3.ID_NUMBER IN (20216)
AND T1.DEPARTMENT
NOT IN
(SELECT T1.DEPARTMENT WHERE
((T.JOB_TYPE IN ('TESTING') AND T2.GROUP IN ('A', 'C', 'D')) OR
((T.JOB_TYPE IN ('PRODUCTION&
我试图使用聚合函数,其中包含子查询。在我对SQL结构的理解中。是我想出来的。但上面写着语法错误。有人能帮我重建口供吗?原来的内容太长了,里面有连接子句,所以我把它们删除了,因为聚合函数的部分只是它要发疯的部分。谢谢
SELECT CCompany,
COUNT(SELECT * FROM Table1 WHERE (CPaymentAmount<CFinalTotal and CStatus='Shipped')) as UnpaidTransactionCount,
COUNT(SELECT * FROM Table1 WHERE (CPay
我想把mincall从callzero中剥离出来。我从第一个查询获得mincall,从第二个查询获得callzero。如何组合这些查询,使我不必使用临时表?
select CONVERT(datetime, convert(varchar(10), min(CALENDAR))) as mincal
from STATS
group by clientid
以及:
select CONVERT(datetime, convert(varchar(10), min(CALENDAR))) as callzero, CLIENTID from STATS
where calls = 0
and
我有如下问题:
SELECT COUNT(*) AS AppleSupports
FROM VendorItemPricing
WHERE VendorName = 'Apple'
SELECT COUNT(*) AS HpSupports
FROM VendorItemPricing
WHERE VendorName = 'HP'
上面的查询给我的结果如下:
AppleSupports
63
HpSupports
387
如何使我的查询在一行中获得如下所示的结果?
AppleSupports HpSupports
63
我希望基于WHERE子句选择记录,并在结果中包含一列,该列说明为什么每个记录都传递WHERE子句的筛选器。
有点像
SELECT name, location, networth, reason
FROM aTable
WHERE location = "France" OR networth > "100"
可能会回来
name|location|networth|reason --reason is the part I need help with
-----------------------------
Joe |France |0
嗨,伙计们,我一直在尝试做这个SQL,但是它显示了这个消息。我不知道为什么,因为条件有一个IN在子查询中搜索,但是它会被困在上面。
查询
SELECT PRO.ID_PRODUCTO,
PRO.ID_CATEGORIA,
PRO.DESCRIPCION AS DESCRIPCION
FROM T_PRODUCTO PRO WHERE PRO.ID_CATEGORIA in (
CASE WHEN @ID_CATEGORIA = '0'
THEN PRO.ID_CATEGORIA
ELSE
(Select [Data]
我有一个mysql查询,这是返回唯一的1条记录,需要跨越多个表。但是,mysql查询在执行时速度很慢。
查询:
SELECT *,
(SELECT TreeName FROM sys_tree WHERE TreeId = Mktg_Unit_Booking.ProjectLevelId) AS PhaseName,
(CASE WHEN ProductType = 'U' THEN (SELECT UnitNo FROM prop_unit pu WHERE pu.UnitId = mktg_unit_booking.UnitId)
ELSE (SELECT BayNo
编辑:
尝试将其更改为以下内容(将CTE移至顶部)。
我现在得到错误:
关键字“FROM”附近的语法不正确。
我尝试把一个非常简单的选择在第二个‘然后’子句,甚至没有使用cte,我得到了同样的错误。似乎不喜欢在第二个子查询?
WITH MainCTE AS (
SELECT DISTINCT rownum = ROW_NUMBER() OVER (
ORDER BY u.PLANNED_DATE
)
,u.name
,u.o
我想在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 '%
我正在编写一个存储过程来查询数据库。
参数被传递给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+'''
我正在尝试创建一个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中解决这个问题的惯用方法是什么?
冗长的标题和奇怪的问题:我想在oracle SQL中使用with-语句,以便在select as group by子句中重用子查询。此外,我使用case语句来创建更多信息并对结果进行分组。但是,此语句抛出以下错误: ORA-00979:不是GROUP BY表达式。
不起作用的示例查询:我定义了一个包含每个产品系列的销售额总和的查询。我对这个查询进行排序,并选择最畅销的产品系列。因此,我想将这个最畅销的产品系列与其他产品系列的销售总和进行比较(不是逐个比较,而是将所有其他产品系列组合在一起)。我通过以下方式完成此操作:
WITH
top_family AS (
SELECT *
FROM (SE
我想检查一下客户是否有特定的产品。如果他们这么做了,回答是的。如果他们不这样做,请返回否。
因此,我编写了一个返回该查询的查询。但是,我不想输入ProductFamily名称。我想加入。
SELECT
ID,
(CASE
WHEN ProductFamily IN ('Product')
THEN 'Yes'
ELSE 'No'
END) AS 'O'
FROM
[source].[Opportunity] A
下面的查询让我知道
我需要一个临时解决方案来解决我造成的问题。本质上,我想计算两个值,但根据条件的结果使用不同的方法。
select userReturnval, userregisterid, OtherValue
FROM
(
(SELECT otherValue
FROM...
) as tblO --unrelated table
,
(
if (select count(userregisterid) from table1 where site =@siteID and userid=@userID) >0
SELECT userReturnv
我可以在case语句中使用子查询吗?这个是可能的吗?
这是我的密码:
SELECT SUM(icd.discrepancy * (
CASE WHEN $priceVal = 1
THEN SELECT i.dPrice FROM item_tb i
WHERE i.ID = icd.itemID
ELSE SELECT p.dPrice FROM price_tb p
WHERE p.brID = '". $brID ."' AND p.itemID = icd.itemID
END
)) as total
我需要为如下内容编写一个查询:
Select [something]
Where
condition in
case
when (if another_condition = A and 3rd Condition = B) then (C,D)
when (if another_condition = N and 3rd Condition = E) then (F,G)
else (J,K)
end
本质上,我想要的是如果A和B被满足,条件可以被设置为C或D,如果N或E被满足,那么条件可以被设置为F或G,否则条件被设置为J或K。然而,当我运行这个程序时,我一直在关键字'Case‘附
我有以下查询:
SELECT name,tid FROM table_name WHERE status=1 AND
CASE
WHEN EXISTS (SELECT 1 FROM table_name WHERE name='name1' AND tid='tid1' AND status=1)
THEN name='name1' AND tid='tid1'
ELSE name='name2' AND tid='tid2'
END;
上面的查询适用于postgres和mysql,但在oracle
在运行此查询时,我得到了一个错误" error : subquery必须只返回一列“:
INSERT INTO details (id, object_id, detail)
(
SELECT
CASE
WHEN (SELECT * FROM details WHERE NOT EXISTS(SELECT 1 FROM main_base WHERE main_base.id = details.id))
THEN
concat(SUBSTRING(main_base.id, '(\d+.\d+.)'
如何修复此查询?我收到以下错误:
'where子句‘中未知列'count_of_confirmed_rec’
MySQL查询:
SELECT
(SELECT COUNT(a.col_1)FROM table_1 a
JOIN table 2 b ON a.col_id= b.col_id) count_of_confirmed_rec,
c.col_1,
FROM table_3 c
LEFT JOIN table_4 d ON c.col_id = d.col_id
WHERE d.col_1 = 'value'
AND c.col_1 = CAS
是否存在将mysql查询按列组合的方法?我有以下问题
select count(ticket_id) as numInProgress from ost_ticket where status
= 'in progress' and topic_id not in (select topic_id from ost_org_site_map)
select count(ticket_id) as numAssigned from ost_ticket where status =
'open' and topic_id not in (select
我有一个相当长的查询,它应该给我一些关于发货的信息,并且它起作用了,但是它的性能非常糟糕。加载大约需要4500毫秒。
SELECT
DATE(paid_at) AS day,
COUNT(*) as order_count,
(
SELECT COUNT(*) FROM line_items
WHERE order_id IN (SELECT id from orders WHERE DATE(paid_at) = day)
) as product_count,
(
SELECT COUNT(*) FROM orde
我们有一个使用ORM的应用程序,它不(很容易)支持参数化查询。为了解决这一问题,我在我们的数据库中启用了强制参数化(SQL2008 R2),以避免缓存膨胀,并鼓励计划重用。
其中一个更复杂的查询没有被完全参数化,我已经将其缩小到在CASE语句中使用的文字值:
SELECT
CASE WHEN auth_date > '2019-02-03 08:48:03' THEN authorisations.authorisation_amount END
FROM authorisations
WHERE auth_date > '2019-02-03 07:48:
UPDATE MyTable SET Status = (SELECT CASE WHEN COUNT(*) > 0
THEN 0
ELSE 1
END
FROM MyTable
WHERE Status = 1 )
WHERE RowNumber BETWEEN 1 AND 5
ORDER BY RowNumber
我
我试图在同一列条件不同的情况下计算同一列的两倍(*)
这就是我所拥有的,我尝试了许多事情,但却无法使它发挥作用。我不想写两个不同的查询。
SELECT somedate as date,
count(*) as goodone,
sum(money) as goodcost
FROM goods
where goodstatus=2 group by date;
当goodstatus =1是坏的,所以我也想包含它,而不是为它编写单独的查询。
最后,我想要的是
somedate | goodone | badones| goodcost
如果我尝试执行
(SELECT count(*)
我刚开始阅读视图教程
我使用了这个链接
在本教程中,他们说
Subquery cannot be included in the SELECT statement.
但他们举了一个例子,
CREATE VIEW vwProducts AS
SELECT productCode,
productName,
buyPrice
FROM products
WHERE buyPrice > (
SELECT AVG (buyPrice)
FROM products
)
ORDER BY buyPrice DESC
告诉
在最近的一个SQL Server2008Select项目中,我遇到了许多查询,其中有一个外部的R2,其字段名与其内部的Select语句中的字段名完全匹配。然后-在内部查询周围的最后一个括号之后-有一个where子句。
例如伪代码
Select Field1, Field2, Field3
From
(
Select Field1, Field2, Field3
From Table1
Inner Join Table2 ON . . . multiple joins . . .
) As A
Where Field 1 = SomeValue AND Field 2 <>
我有一个sceanrio,其中我需要根据主select语句中的条件从不同的子查询中检索值。我尝试使用Case,但问题是Case不支持多列。有没有什么办法可以解决这个问题,或者有没有其他方法可以解决这个问题。
我在简化查询中的场景
select col1,col2,
case when col3='E01089001' then
(select 1,3 from dual)
else
(select 2,4 from dual)
end
from Table1
where col1='A0529';