Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
razliv
Member

Откуда:
Сообщений: 1263
Mindaugas

Вот так(одновременно и создает таблицу, и ее заполняет):

select CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
into dbo.Elektros_laikas_tbl
from ivadas1 t1
inner join ivadas2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime)




Тут только заполняет:

insert into dbo.Elektros_laikas_tbl(dt)
select CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
from ivadas1 t1
inner join ivadas2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime)
13 июн 14, 15:46    [16161340]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
исходя из
data (4+8) (11+15) 18 20 (22-23) 12 24 29 3 6 30 5
должно быть чет такого

select
  [data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
  ,[(4+8)] = t1.4+t1.8
  ,[18] = t2.18
  ,[20] =t2.20
  ,[(22-23)] = t3.22-t3.23
  ,[12] = t2.12
  ,[24] =t3.24
  ,[29] =t3.29
  ,[3] =t1.3
  ,[30] =t3.30
  ,[5] =t1.5
from tabl1 t1
  inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime) 
  inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime) 
13 июн 14, 16:00    [16161387]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47195
Ребята, зачем конвертируете 102-м стилем?
В определённых условиях CAST обломается.
А если не обломается, преобразует неправильно.
Применяйте 112-й стиль.

Или вообще
DATEADD(DAY,DATEDIFF(DAY,0,D),0)
13 июн 14, 16:08    [16161411]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

и как столбцы в одной таблице:


data (4+8) (11+15) 18 20 (22-23) 12 24 29 3 6 30 5
2014-06-01
2014-06-02
2014-06-03
.............
2020-12.10
13 июн 14, 16:11    [16161418]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

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

так а чем мой вариант вас не устроил то ? + замечания iap
13 июн 14, 16:19    [16161441]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

большое спасибо
13 июн 14, 16:33    [16161479]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

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

только возможна маленькая бяка.. если количество записей в таблицах не будет совпадать
13 июн 14, 16:39    [16161505]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

Могу я задать еще один? и если есть таблица:

data 1 2 3
2014-06-12 x x x
2014-06-13 x x x
2014-06-14 x x x
.......
2020-06-20 x x x

как создать новую таблицу, которая была бы вычитание линий, таких как:

data 2014-06-13 (1) - data 2014-06-12 (1)
data 2014-06-13 (2) - data 2014-06-12 (2)
data 2014-06-13 (3) - data 2014-06-12 (3)
data 2014-06-14 (1) - data 2014-06-13 (1)
data 2014-06-14 (2) - data 2014-06-13 (2)
data 2014-06-14 (3) - data 2014-06-13 (3)
etc...

data 1 2 3
2014-06-12 x x x
2014-06-13 x x x
2014-06-14 x x x
.......
2020-06-20 x x x
13 июн 14, 17:00    [16161569]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Десь так
select
   data = DATEADD(DAY,DATEDIFF(DAY,0,t1.data),0)
  ,[1-1] = t1.1-t2.1
  ,[2-2] =t1.2  -t2.2
  ,[3-3] =t1.3 -t2.3
from tabl1 t1
  inner join tablb1 t2 on DATEADD(DAY,DATEDIFF(DAY,0,t1.data),0) = DATEADD(DAY,DATEDIFF(DAY,0,t2.data),-1)
13 июн 14, 17:19    [16161634]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

Msg 8117, Level 16, State 1, Line 1
Operand data type nchar is invalid for subtract operator.
13 июн 14, 18:08    [16161748]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
все работает, но только когда ввести формулу, как сделать данные автоматически копируются ежедневно?
14 июн 14, 18:30    [16163440]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
все работает, но только когда ввести формулу, как сделать данные автоматически копируются ежедневно?

razliv
Mindaugas

Вот так(одновременно и создает таблицу, и ее заполняет):

select CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
into dbo.Elektros_laikas_tbl
from ivadas1 t1
inner join ivadas2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime)




Тут только заполняет:

insert into dbo.Elektros_laikas_tbl(dt)
select CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
from ivadas1 t1
inner join ivadas2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime)
14 июн 14, 18:44    [16163477]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
все работает, но только когда ввести формулу, как сделать данные автоматически копируются ежедневно?

Maxx
исходя из
data (4+8) (11+15) 18 20 (22-23) 12 24 29 3 6 30 5
должно быть чет такого

select
  [data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
  ,[(4+8)] = t1.4+t1.8
  ,[18] = t2.18
  ,[20] =t2.20
  ,[(22-23)] = t3.22-t3.23
  ,[12] = t2.12
  ,[24] =t3.24
  ,[29] =t3.29
  ,[3] =t1.3
  ,[30] =t3.30
  ,[5] =t1.5
from tabl1 t1
  inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime) 
  inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime) 
14 июн 14, 19:10    [16163553]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
1.Почитать про условие where
2.Определиться с нужным интервалом
3. Сделать джоб (почитать про SQL Agent)
4. Настроить рнасписание джоба
5. Смотреть как работает :)
16 июн 14, 09:55    [16167806]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
Как зделать, чтобы данные какда ежедневно приходять в ети таблицы, то и автаматически шли по етой формуле на указаную таблицу?

Maxx
исходя из
data (4+8) (11+15) 18 20 (22-23) 12 24 29 3 6 30 5
должно быть чет такого

select
  [data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
  ,[(4+8)] = t1.4+t1.8
  ,[18] = t2.18
  ,[20] =t2.20
  ,[(22-23)] = t3.22-t3.23
  ,[12] = t2.12
  ,[24] =t3.24
  ,[29] =t3.29
  ,[3] =t1.3
  ,[30] =t3.30
  ,[5] =t1.5
from tabl1 t1
  inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime) 
  inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime) 
16 июн 14, 09:56    [16167811]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
razliv
Member

Откуда:
Сообщений: 1263
Миндаугас,

Ну так допиши процедуру - как они приходят, там же и добавь этот селектик ?
И вообще как данные приходят в эти таблицы ?
16 июн 14, 10:26    [16167932]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
Данные приходят из OPC сервера каждый день по указаному времени. не умею я ребята с sql работать. По формуле Маxx где указал, всё работает, новае таблица сосдаёться и данные копируеться, но толка один раз, а как зделать чтобы в ету таблицу шли данные как толко обнавляетса данные таблитцах из каторых далжны придьти данные?



razliv
Миндаугас,

Ну так допиши процедуру - как они приходят, там же и добавь этот селектик ?
И вообще как данные приходят в эти таблицы ?
16 июн 14, 10:43    [16168011]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

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

Ну я не знаю, у вас все делают не свою работу ??? Даже если так - т о начинайте читать хелп по продукту , очнеь тяжело писать вам по 5 раз одно и тоже, форум то для помощи.. а не для седлайцте за меня работу
Maxx
1.Почитать про условие where
2.Определиться с нужным интервалом
3.Почитать как создаються хранимые процедуры
4. Сделать джоб (почитать про SQL Agent)
5. Настроить рнасписание джоба
6. Смотреть как работает :)
16 июн 14, 10:53    [16168073]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
Maxx,
Можем договориться не безплатно?
16 июн 14, 15:16    [16170033]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mindaugas, спасибо за предожение,но ,увы. Нет свободного времени. Там реально работы то нет.
1. Таблица у вас уже есть
2.
use DB
GO
create procudure dbo.LoadData (
   @inputdate datetime  -- входной параметр
)
as begin
  set nocunt on
   declare 
     @prm datetime
     ,@msg nvarchar(2048)
   if @inputdate is NULL
   begin
      raiserror('Входной парметр пустой- Ай ай ай',16,10) with seterror
      return -1
   end
   set @prm = CAST(CONVERT(nvarchar(10), @inputdate,102) as datetime)
   if exists (
       select 1
       from dbo.Tabl4
       where data =@prm
   )
   begin
     raiserror('сообщение о том что данные загружены за етот день',16,10)with seterror
     return -1 
   end
   -- грузите данные
begin try
insert into dbo.Tabl4(.........)  
select
  [data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
  ,[(4+8)] = t1.4+t1.8
  ,[18] = t2.18
  ,[20] =t2.20
  ,[(22-23)] = t3.22-t3.23
  ,[12] = t2.12
  ,[24] =t3.24
  ,[29] =t3.29
  ,[3] =t1.3
  ,[30] =t3.30
  ,[5] =t1.5
from tabl1 t1
  inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime) 
  inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime)
where  CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = @prm
end try
begin catch
   set @msg = ERROR_MESSAGE()
    raiserror(@msg, 16,10) with seterror
    return -1
end cacth
   return 0
end
GO
GRANT EXEC ON dbo.LoadData to SOMEONE (ваш пользователь)

3. SQL Agent -> Create New Job
4. Add SQL Tasks
5. Add Schedule
16 июн 14, 16:09    [16170534]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

Как Max ,
select
[data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
,[(4+8)] = t1.4+t1.8
,[18] = t2.18
,[20] =t2.20
,[(22-23)] = t3.22-t3.23
,[12] = t2.12
,[24] =t3.24
,[29] =t3.29
,[3] =t1.3
,[30] =t3.30
,[5] =t1.5
from tabl1 t1
inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime)
inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime)

и ето

select
data = DATEADD(DAY,DATEDIFF(DAY,0,t1.data),0)
,[1-1] = t1.1-t2.1
,[2-2] =t1.2 -t2.2
,[3-3] =t1.3 -t2.3
from tabl1 t1
inner join tablb1 t2 on DATEADD(DAY,DATEDIFF(DAY,0,t1.data),0) = DATEADD(DAY,DATEDIFF(DAY,0,t2.data),-1)

как зделать в одном и чтобы каждый дены добавились новые данные. какая формула нужна чтобы update зделать чтобы обнавлялись новые данные?
время update папытаюс зделать сам
3. SQL Agent -> Create New Job
4. Add SQL Tasks
5. Add Schedule
17 июн 14, 10:44    [16173995]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

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

как сделать за день я показывал уже
Ети 2 селекта должны писать в 1 таблицу или в 2 разных ?
17 июн 14, 11:09    [16174191]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

Откуда:
Сообщений: 42
Ети 2 селекта должны писать в 1 таблицу. Мне ошибок много, чтото непонемаю
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'procudure'.
Msg 195, Level 15, State 5, Line 5
'nocunt' is not a recognized SET option.
Msg 137, Level 15, State 2, Line 9
Must declare the scalar variable "@inputdate".
Msg 178, Level 15, State 1, Line 12
A RETURN statement with a return value cannot be used in this context.
Msg 137, Level 15, State 2, Line 14
Must declare the scalar variable "@inputdate".
Msg 178, Level 15, State 1, Line 22
A RETURN statement with a return value cannot be used in this context.
Msg 178, Level 15, State 1, Line 50
A RETURN statement with a return value cannot be used in this context.
Msg 178, Level 15, State 1, Line 52
A RETURN statement with a return value cannot be used in this context.


Maxx
Mindaugas,

как сделать за день я показывал уже
Ети 2 селекта должны писать в 1 таблицу или в 2 разных ?
17 июн 14, 11:27    [16174386]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Maxx
Member [скрыт]

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

:( там опечатка... вместо create procudure надо create procedure
ну и добавте

insert into dbo.Tabl4(.........)  
select
  [data] = CAST(CONVERT(nvarchar(10), t1.data,102) as datetime)
  ,[(4+8)] = t1.4+t1.8
  ,[18] = t2.18
  ,[20] =t2.20
  ,[(22-23)] = t3.22-t3.23
  ,[12] = t2.12
  ,[24] =t3.24
  ,[29] =t3.29
  ,[3] =t1.3
  ,[30] =t3.30
  ,[5] =t1.5
---
,[1-1] = t1.1-t2.1
 ,[2-2] =t1.2 -t2.2
 ,[3-3] =t1.3 -t2.3
from tabl1 t1
  inner join tabl2 t2 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t2.data,102) as datetime) 
  inner join tabbl3 t3 on CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = CAST(CONVERT(nvarchar(10), t3.data,102) as datetime)
where  CAST(CONVERT(nvarchar(10), t1.data,102) as datetime) = @prm
17 июн 14, 12:15    [16174827]     Ответить | Цитировать Сообщить модератору
 Re: помогите создать одну таблицу, из нескольких таблиц  [new]
Mindaugas
Member

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

ище ошибки:
Msg 195, Level 15, State 5, Procedure LoadData, Line 5
'nocunt' is not a recognized SET option.
Msg 156, Level 15, State 1, Procedure LoadData, Line 52
Incorrect syntax near the keyword 'return'.
Msg 102, Level 15, State 1, Procedure LoadData, Line 53
Incorrect syntax near 'end'.
17 июн 14, 12:21    [16174894]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить