Получить текущую запись для подзапроса в T-SQL - PullRequest
1 голос
/ 13 мая 2011

Я пытаюсь выбрать все записи из таблицы «Table1», но я хочу новый столбец с именем «HasException», который содержит «0» или «1». «HasException» должно быть «0», если количество строк, соответствующих текущему идентификатору из «Table2», равно 0, в противном случае возвращается 1.

Вот что я сделал до сих пор, но это не работает:

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

Ответы [ 3 ]

1 голос
/ 13 мая 2011

Вы хотите присоединиться к таблицам (и группировать по 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
1 голос
/ 13 мая 2011
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    
1 голос
/ 13 мая 2011

возможно, что-то вроде, предполагая, что вы имели в виду table2?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...