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

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

+
[SUP][/SUP] select DRILLINGDETAIL.holeid, DRILLINGDETAIL.projectcode,  T3.GeolLength, t4.[Sample],drillingdate,shift, 
 (case when shift = 'day' or shift = 'unknown'  and DRILLINGDETAIL.name = 'totaldrilldepth' then DRILLINGDETAIL.Value  end)[DAY],
  (case when shift = 'night' and DRILLINGDETAIL.name = 'totaldrilldepth' then DRILLINGDETAIL.Value  end)[NIGHT],
 
  TotalDrillDepth3 from   (

select geointerval.holeid, (max(geolto) - min(geolfrom))GeolLength from GEOINTERVAL left join DRILLINGDETAIL on GEOINTERVAL.holeid = DRILLINGDETAIL.holeid    group by GEOINTERVAL.holeid)T3

left join 

 ( select Holeid, count(SampleID) as [Sample] from sample where  SampleID<>holeid group by holeid)t4
 on t4.HOLEID=t3.HOLEID
 left join (select holeid, TotalDrillDepth3 = SUM(Cast((case when ddd.name = 'totaldrilldepth' then ddd.Value end) as DECIMAL(20,2))) from DRILLINGDETAIL ddd group by HOLEID)dd on dd.holeid = t3.holeid
 left join DRILLINGDETAIL on DRILLINGDETAIL.holeid=t3.HOLEID 

 where DRILLINGDETAIL.projectcode ='uz' and cast(DRILLINGDETAIL.DRILLINGDATE as date)  between '27-oct-2017' and '27-oct-2017'  

 group by DRILLINGDETAIL.holeid,DRILLINGDETAIL.projectcode,  T3.GeolLength, t4.[Sample],shift,DRILLINGDATE,DRILLINGDETAIL.name,DRILLINGDETAIL.Value, TotalDrillDepth3,shift[/SUP]




Кажется у меня кривые руки...

К сообщению приложен файл. Размер - 27Kb
13 фев 18, 14:17    [21187848]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
katish444,
Извините что не пишу исходные данные таблиц, мне бы просто функцию подсказать которая их сольет в одну строку
13 фев 18, 14:19    [21187853]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 46269
katish444
katish444,
Извините что не пишу исходные данные таблиц, мне бы просто функцию подсказать которая их сольет в одну строку
И превратится ночь в день?
13 фев 18, 14:26    [21187889]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
982183
Member

Откуда: VL
Сообщений: 2273
И что в этом случае ты хочешь получить в поле DAY?
13 фев 18, 14:26    [21187891]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
LSV
Member [заблокирован]

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

group by , min()/max()
13 фев 18, 14:27    [21187892]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5139
katish444,
...
[Day] = SUM(ISNULL(Day,0)),
[NIGHT] = SUM(ISNULL(NIGHT,0))
GROUP BY ..
13 фев 18, 14:28    [21187898]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
982183
Member

Откуда: VL
Сообщений: 2273
30?
6?
36?
18?
13 фев 18, 14:28    [21187899]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
iap,
нет, не превратится, колонки то разные
13 фев 18, 14:38    [21187940]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
SvElena
Member

Откуда:
Сообщений: 21
select distinct isnull(day, night)
13 фев 18, 14:39    [21187945]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
Сейчас попробую, спасибо
TaPaK,
13 фев 18, 14:48    [21188002]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 46269
katish444
iap,
нет, не превратится, колонки то разные
Колонка одна - shift
13 фев 18, 14:50    [21188009]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5139
iap
katish444
iap,
нет, не превратится, колонки то разные
Колонка одна - shift

запилить в неё "НочеДень" :)
13 фев 18, 14:51    [21188016]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
iap,
нет, в полученной таблице это ведь Day Night
13 фев 18, 14:51    [21188017]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 46269
iap
katish444
iap,
нет, не превратится, колонки то разные
Колонка одна - shift
Я сейчас заметил, что речь идёт о двух строках, а красной загогулиной обведены три!
Нехорошо!
13 фев 18, 14:52    [21188022]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 46269
katish444
iap,
нет, в полученной таблице это ведь Day Night
Чего-чего?
13 фев 18, 14:54    [21188024]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
SvElena
Member

Откуда:
Сообщений: 21
SvElena
select distinct isnull(day, night)

вернее так
select ... sum(isnull(day, night)) ...
group by ...
13 фев 18, 14:57    [21188042]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5139
SvElena,

не читайте что просят, сразу пилите
13 фев 18, 15:00    [21188054]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
testuser1
Guest
select DRILLINGDETAIL.holeid, DRILLINGDETAIL.projectcode,  T3.GeolLength, t4.[Sample],drillingdate, 
 max((case when shift = 'day' or shift = 'unknown'  and DRILLINGDETAIL.name = 'totaldrilldepth' then DRILLINGDETAIL.Value  end)) [DAY],
  max((case when shift = 'night' and DRILLINGDETAIL.name = 'totaldrilldepth' then DRILLINGDETAIL.Value  end)) [NIGHT],
 
  TotalDrillDepth3 from   (

select geointerval.holeid, (max(geolto) - min(geolfrom))GeolLength from GEOINTERVAL left join DRILLINGDETAIL on GEOINTERVAL.holeid = DRILLINGDETAIL.holeid    group by GEOINTERVAL.holeid)T3

left join 

 ( select Holeid, count(SampleID) as [Sample] from sample where  SampleID<>holeid group by holeid)t4
 on t4.HOLEID=t3.HOLEID
 left join (select holeid, TotalDrillDepth3 = SUM(Cast((case when ddd.name = 'totaldrilldepth' then ddd.Value end) as DECIMAL(20,2))) from DRILLINGDETAIL ddd group by HOLEID)dd on dd.holeid = t3.holeid
 left join DRILLINGDETAIL on DRILLINGDETAIL.holeid=t3.HOLEID 

 where DRILLINGDETAIL.projectcode ='uz' and cast(DRILLINGDETAIL.DRILLINGDATE as date)  between '27-oct-2017' and '27-oct-2017'  

 group by DRILLINGDETAIL.holeid,DRILLINGDETAIL.projectcode,  T3.GeolLength, t4.[Sample],DRILLINGDATE,DRILLINGDETAIL.name, TotalDrillDepth3t
13 фев 18, 15:09    [21188101]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
aleks222
Guest
katish444
katish444,
Извините что не пишу исходные данные таблиц, мне бы просто функцию подсказать которая их сольет в одну строку

Орлы, ну покажите вы дэвушке кнопку "сделать все как я хачу".
13 фев 18, 15:51    [21188293]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 790
aleks222
Орлы, ну покажите вы дэвушке кнопку "сделать все как я хачу".

Из кустов выглядывает гусар:
- Ш-ш-ш-ш - прикладывает он палец к губам.
13 фев 18, 16:03    [21188356]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
testuser1, большой прибольшое спасибо
14 фев 18, 06:07    [21189569]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
testuser1,
а как добавить столбец, чтобы он Day+Night считал?
Если не трудно подскажите пожалуйста
14 фев 18, 06:09    [21189573]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 229
katish444,

With a as (Запрос TestUser)
Select *,[NIGHT]+[DAY] From a
14 фев 18, 06:25    [21189584]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

Откуда:
Сообщений: 236
Kopelly
katish444,
привет, спасибо, сейчас попробую
With a as (Запрос TestUser)
Select *,[NIGHT]+[DAY] From a
14 фев 18, 07:01    [21189600]     Ответить | Цитировать Сообщить модератору
 Re: Как соединить строки  [new]
katish444
Member

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

он начал ругаться, но вот так вот сработал
(sum(cast([DAY] as float))+sum(cast([NIGHT] as float)))Total


Однако если допустим только у дня есть значение, а ночью NULL, то он вообще ничего не считает и пишет NULL
Почему это может быть?
14 фев 18, 07:09    [21189606]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить