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

Откуда:
Сообщений: 4
Имеются две таблицы: Revenues(выручка) и Service Cards(карточки услуг). Во второй таблице содержатся записи с оплаченной суммой за услуги (дата, услуга, ... , сумма). Необходимо сгруппировать записи по дате и посчитать общую сумму оплаченного за каждый день (общую выручку) и подставить эти значения в столбец "rev_total_sum" таблицы Revenues. Вообще хотелось бы, чтобы эти самые значения записывались туда автоматически и не редактировались, такое вообще возможно?(может через Default Value или Formula??), а если нет, то хотя бы чтобы через запрос значения, отличные от тех, что в запросе, нельзя было написать. Делаю так, но получается какая-то ерунда:

SELECT date, rev_total_sum
FROM [Service cards], Revenues
WHERE rev_total_sum IN
	(SELECT Sum(serv_cards_sum) AS [Total_Sum]
	FROM [Service cards] GROUP BY [Service cards].date); 


Помогите, пожалуйста, изучаю SQL всего месяц.
8 июн 17, 11:57    [20549522]     Ответить | Цитировать Сообщить модератору
 Re: Подстановка в SQL-Server или как забить в столбец таблицы значения, вычисленные из другой  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Сервер какой?
8 июн 17, 12:06    [20549563]     Ответить | Цитировать Сообщить модератору
 Re: Подстановка в SQL-Server или как забить в столбец таблицы значения, вычисленные из другой  [new]
Psycheya
Member

Откуда:
Сообщений: 4
Cammomile,

Не совсем поняла вопрос. Вы спрашиваете название сервера, к которому подключена база?
8 июн 17, 12:10    [20549581]     Ответить | Цитировать Сообщить модератору
 Re: Подстановка в SQL-Server или как забить в столбец таблицы значения, вычисленные из другой  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
;
WITH
sums AS (
  SELECT
    [date],
    [rev_total_sum] = SUM( [serv_cards_sum] )
  FROM
    [Service cards]
  GROUP BY
    [date]
)
MERGE
INTO
  [Revenues] t
USING
  sums s
ON (
      t.[date] = s.[date] )
WHEN MATCHED AND t.[rev_total_sum] != s.[rev_total_sum] THEN
  UPDATE SET
    t.[rev_total_sum] = s.[rev_total_sum]
WHEN NOT MATCHED THEN
  INSERT (
    [date],
    [rev_total_sum]
  )
  VALUES (
    s.[date],
    s.[rev_total_sum]
  )
;
8 июн 17, 12:24    [20549662]     Ответить | Цитировать Сообщить модератору
 Re: Подстановка в SQL-Server или как забить в столбец таблицы значения, вычисленные из другой  [new]
Psycheya
Member

Откуда:
Сообщений: 4
Руслан Дамирович,

все работает, при каждом запуске запроса данные обновляются как надо, большое спасибо!Может быть еще подскажите, как сделать так, чтобы при добавлении новой записи в Карточки услуг
8 июн 17, 15:00    [20550354]     Ответить | Цитировать Сообщить модератору
 Re: Подстановка в SQL-Server или как забить в столбец таблицы значения, вычисленные из другой  [new]
Psycheya
Member

Откуда:
Сообщений: 4
Руслан Дамирович,

все работает, при каждом запуске запроса данные обновляются как надо, большое спасибо! Может быть еще подскажите, как сделать так, чтобы при добавлении новой записи в Карточки услуг с датой, которой нет в Выручке (там дата - клчевое поле и связано оно с датой в карточках), появлялась новая запись с этой датой в таблице выручки, чтобы ошибки не возникало? Если такое возможно, конечно. Думаю, что можно это сделать запросом, примерно похожим конструкцией на предыдущий, но знаний мне не хватает.
8 июн 17, 15:04    [20550376]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить