Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Посчитать количество записей в таблице  [new]
Bajer
Member

Откуда:
Сообщений: 5
Добрый день.
Подскажите пожалуйста.
Допустим у меня есть 2 таблицы. А и Б.

Create table A
(
	ID int null,
	Name varchar(max) null,
	Lastname varchar(max) null
)

Create table B
(
	ID int null,
	Name varchar(max) null,
	Lastname varchar(max) null
)


И есть фильтр. ID <> 2. Подскажите, как можно сделать следующее условие:
Если в таблице А больше одной записи, удовлетворяющей фильтру ID <> 2 то вставить в таблицу B, в поле ID, какое - нибудь значение. Например 17. Можно ли это написать с помощью SELECT и UPADTE. Или хоть как - нибудь.
Заранее спасибо.
19 окт 15, 14:31    [18297255]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31425
Bajer
Если в таблице А больше одной записи, удовлетворяющей фильтру ID <> 2 то вставить в таблицу B, в поле ID, какое - нибудь значение. Например 17. Можно ли это написать с помощью SELECT и UPADTE. Или хоть как - нибудь.
Вставка делается командой INSERT ... SELECT.
Условия вставки нужнро добавить в эту команду SELECT, раз эти условия - существование записей в таблице, то условие будет выглядеть как WHERE EXISTS(...)
19 окт 15, 14:36    [18297299]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
Bajer
Member

Откуда:
Сообщений: 5
Не совсем существование. Мне нужно узнать количество записей в таблице, и если количество этих записей, соответствующих фильтру больше одной то вставить значение. Я пытался что - то написать, но что - то не очень получается:

UPDATE TB
SET ID = CASE WHEN F.ID = 1 THEN '17' END
FROM Table_B TB INNER JOIN
(SELECT
COUNT(CASE WHEN TBN.1 <> 2 THEN 1 END) AS ID
FROM Table_A TBN
) AS B ON B.ID = TB.ID

Но это неправльно
19 окт 15, 14:41    [18297351]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
Bajer
Member

Откуда:
Сообщений: 5
Не совсем существование. Мне нужно узнать количество записей в таблице, и если количество этих записей, соответствующих фильтру больше одной то вставить значение. Я пытался что - то написать, но что - то не очень получается:

UPDATE TB
SET ID = CASE WHEN B.ID = 1 THEN '17' END
FROM Table_B TB INNER JOIN
(SELECT
COUNT(CASE WHEN TBN.1 <> 2 THEN 1 END) AS ID
FROM Table_A TBN
) AS B ON B.ID = TB.ID
19 окт 15, 14:42    [18297368]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
Bajer
Мне нужно узнать количество записей в таблице, и если количество этих записей, соответствующих фильтру больше одной то вставить значение.
Буквально:
IF (SELECT COUNT(*) FROM T WHERE ...) > 1
  INSERT T
  (...)
  VALUES
  (...)
19 окт 15, 14:46    [18297400]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
Bajer
Member

Откуда:
Сообщений: 5
А это можно в Select сделать как - нибудь?
19 окт 15, 14:56    [18297455]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
Bajer,

INSERT T
(...)
SELECT
...
WHERE (SELECT COUNT(*) FROM T WHERE ...) > 1
19 окт 15, 14:57    [18297458]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
PaulYoung
Bajer,

INSERT T
(...)
SELECT
...
WHERE (SELECT COUNT(*) FROM T WHERE ...) > 1
Bajer хочет вставить значение в одно какое-то поле.
Ему и невдомёк, что можно вставить только строку целиком.
Зачем же его обнадёживать?
19 окт 15, 15:01    [18297476]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
Bajer
Member

Откуда:
Сообщений: 5
Проблема в том, что у меня кроме этого поля ещё есть и другие поля.
SELECT INVS.ParticipantKey,
MAX(CASE WHEN DP.AccountKey = 6 THEN 1 ELSE 0 END) as HasHSA,
MAX(FPS.StartDateKey) as MostCurrentEnrollment,
CASE WHEN EXISTS(SELECT MAX(FPS.EndDateKey) WHERE FPS.EndDateKey <>-2) THEN 1 END AS CurrentPlanYear

Нужно именно в селекте посчитать количество записей
19 окт 15, 15:02    [18297485]     Ответить | Цитировать Сообщить модератору
 Re: Посчитать количество записей в таблице  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
Bajer,

проблема в том, что однозначно не ясно, что же все-таки нужно. Я пас.
19 окт 15, 15:12    [18297554]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить