Tsql 在T-SQL中获取子查询的当前记录
我试图从表“Table1”中选择所有记录,但我需要一个名为“HasException”的新列,该列包含“0”或“1”。如果与“Table2”中的当前Id匹配的行数等于0,则“HasException”必须为“0”,否则返回1 以下是我到目前为止所做的,但它不起作用:Tsql 在T-SQL中获取子查询的当前记录,tsql,Tsql,我试图从表“Table1”中选择所有记录,但我需要一个名为“HasException”的新列,该列包含“0”或“1”。如果与“Table2”中的当前Id匹配的行数等于0,则“HasException”必须为“0”,否则返回1 以下是我到目前为止所做的,但它不起作用: SELECT *, CONVERT(bit, (CASE WHEN (SELECT count(Id) FROM Table2 WHERE Table1.Id=Table2.Id) = 0 THEN 0 ELSE 1 END)) A
SELECT *,
CONVERT(bit, (CASE WHEN (SELECT count(Id) FROM Table2 WHERE Table1.Id=Table2.Id) = 0 THEN 0 ELSE 1 END)) AS HasException
FROM Table1
也许是,假设你指的是表2
SELECT *,
CAST(CASE WHEN COUNT(table2.id) = 0 THEN 0 ELSE 1 END AS bit) AS HasException
FROM
Table1
LEFT JOIN
Table2 ON Table1.Id=Table2.Id
GROUP BY
Table1.id
在比较以下两个值之前,您希望联接表(并按ID分组):
SELECT dbo.Table_1.*,
CASE WHEN COUNT(dbo.Table_2.ID) = 0 THEN
0
ELSE
1
END
AS HasException
FROM dbo.Table_1 LEFT OUTER JOIN
dbo.Table_2 ON dbo.Table_1.ID = dbo.Table_2.ID
GROUP BY dbo.Table_1.ID
代码中有table2,但描述中没有。是的,当table2.ID中有超过0行与当前Table1.ID匹配时,我想显示1。
select
T1.*,
case when T2.Id is null then 0 else 1 end as HasException
from Table1 as T1
left outer join
(
select distinct Id
from Table2
) as T2
on T1.Id = T2.Id