Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Соединить 5 таблиц по ключу и с distinct / 8 сообщений из 8, страница 1 из 1
19.01.2018, 10:36
    #39586897
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
Уважаемые форумчани. Пытаюсь сделать сводную таблицу, но у меня не выходит. Есть таблицы с данными

create table HOLECOORD (holeid varchar(255), projectcodevarchar(255), coordinatesetvarchar(255), x int,y int,z int)
create table HOLEDETAILS (holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))
create table DRILLHOLEDIAMDETAILS (holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))
create table HOLESURVEY (holeid varchar(255), projectcode varchar(255), depth int, azimuth decimal(20,5), dip decimal(20,5), azimuthGridName varchar(255))
create table DRILLINGDETAIL (drillingdate varchar(255), shift varchar(255), holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))

insert into HOLECOORD (holeid, projectcode, coordinateset, x,y,z) values ('UZSE-17-001', 'UZ', 'WGS84_Zone_43N_Plan', 100,200,300)
insert into HOLEDETAILS (holeid, projectcode, name, value) values ('UZSE-17-001', 'UZ', 'Drill_Date_Start', '26-oct-2017')
insert into HOLEDETAILS (holeid, projectcode, name, value) values ('UZSE-17-001', 'UZ', 'Depth_Project', '100')
insert into DRILLHOLEDIAMDETAILS (holeid, projectcode, name, value) values ('UZSE-17-001', 'UZ', 'DrillRigModel', 'LF90')
insert into HOLESURVEY (holeid, projectcode, depth, azimuth, dip, azimuthGridName) values ('UZSE-17-001', 'UZ',0,20,90,'AZ')
insert into HOLESURVEY (holeid, projectcode, depth, azimuth, dip, azimuthGridName) values ('UZSE-17-001', 'UZ',20,40,60,'AZ')
insert into DRILLINGDETAIL (drillingdate, shift, holeid, projectcode, name, value) values ('27-oct-2017','day','UZSE-17-001',
'UZ',DrillDepth','20')

Необходимо создать запрос, у меня не отображает Azimuth Dip

select distinct h.holeID, hcd.X, hcd.Y,s.AZIMUTH, s.DIP, h.projectcode,dd.DRILLINGDATE,
max(case when dr.name = 'DrillRigModel' then dr.Value end) as DrillRigModel,
max(case when hd.name = 'Depth_Project' then hd.Value END) as Depth_Project,
max(case when hd.name = 'Drill_Date_Start' then hd.Value END)as Drill_Date_Start
from HOLEDETAILS hd left join
DRILLHOLEDIAMDETAILS dr on dr.HOLEID=hd.HOLEID left join holelocation h on h.HOLEID=hd.HOLEID
left join ( select distinct hs1.Holeid, hs1.Depth, hs1.AZIMUTH, hs1.DIP from HOLESURVEY hs1 inner join
(select distinct hs2.Holeid, min(hs2.Depth)D from HOLESURVEY hs2 group by hs2.Holeid)hs on hs.Holeid=hs1.Holeid and hs.D=hs1.Depth group by hs.Holeid, hs1.Holeid, hs1.Depth, hs1.AZIMUTH, hs1.DIP)s on h.HOLEID=s.HOLEID
left join DRILLINGDETAIL dd on dd.holeid=hd.HOLEID
left join (select holeid, projectcode, round(x,2)X ,round(y,2)Y,round(z,2)Z
from HOLECOORD where coordinateset = 'WGS84_Zone_43N_Plan')hcd on hcd.holeid=h.holeid and h.projectcode=h.projectcode
where h.projectcode = 'uz' and DRILLINGDATE = '2ct-2017'
GROUP BY
h.holeID, h.projectcode, hcd.X, hcd.Y,s.AZIMUTH, s.DIP,dd.DRILLINGDATE

Таблица должна получится как на картинке, но без Null
Помогите пожалуйста
[img=]
...
Рейтинг: 0 / 0
19.01.2018, 10:55
    #39586915
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
katish444Уважаемые форумчани. Пытаюсь сделать сводную таблицу, но у меня не выходит. Есть таблицы с данными

create table HOLECOORD (holeid varchar(255), projectcodevarchar(255), coordinatesetvarchar(255), x int,y int,z int)
create table HOLEDETAILS (holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))
create table DRILLHOLEDIAMDETAILS (holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))
create table HOLESURVEY (holeid varchar(255), projectcode varchar(255), depth int, azimuth decimal(20,5), dip decimal(20,5), azimuthGridName varchar(255))
create table DRILLINGDETAIL (drillingdate varchar(255), shift varchar(255), holeid varchar(255), projectcode varchar(255), name varchar(255), value varchar(255))

DRILLHOLEDIAMDETAILS dr on dr.HOLEID=hd.HOLEID left join holelocation h on h.HOLEID=hd.HOLEID

[img=]

Что в таблице holelocation ?
...
Рейтинг: 0 / 0
19.01.2018, 11:20
    #39586933
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
katish444,
1. Все твои проблемы от того, что код написан неряшливо - да его банально читать неудобно.
2. DISTINCT + GROUP BY - это как презерватив на свечке.
3. Словами опиши, что нужно.
4. Добавь данных. Твой запрос на тестовых данных дает не то же, что на картинке.
5. Телепатия
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SELECT
  hc.[holeid],
  hc.[projectcode],
  [x] = ROUND( hc.[x], 2 ),
  [y] = ROUND( hc.[y], 2 ),
  [z] = ROUND( hc.[z], 2 ),
  ddd.[drillingdate],
  [drill_depth] = ddd.[value],
  [drill_rig_model]   = drm.[value],
  [depth_project]    = dp.[value],
  [drill_date_start]  = dds.[value],
  hs.[azimuth],
  hs.[dip]
from
  HOLECOORD hc
  INNER JOIN DRILLINGDETAIL ddd ON (
        ddd.[holeid] = hc.[holeid]
    AND ddd.[name] = 'DrillDepth' )
  LEFT JOIN HOLESURVEY hs ON (
        hs.[holeid] = hc.[holeid]
    AND hs.[depth] = CONVERT( INT, ddd.[value] ) )
  LEFT JOIN DRILLHOLEDIAMDETAILS drm ON (
        drm.[holeid] = hc.[holeid]
    AND drm.[name] = 'DrillRigModel' )
  LEFT JOIN HOLEDETAILS dp ON (
        dp.[holeid] = hc.[holeid]
    AND dp.[name] = 'Depth_Project' )
  LEFT JOIN HOLEDETAILS dds ON (
        dds.[holeid] = hc.[holeid]
    AND dds.[name] = 'Drill_Date_Start' )
WHERE
      hc.[projectcode] = 'UZ'
...
Рейтинг: 0 / 0
19.01.2018, 11:34
    #39586943
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
Чтобы ускорить получение ответа в форуме нужно создать две одинаковые темы с немного изменным названием

http://www.sql.ru/forum/1282930/ne-vyvodit-sushhestvuushhie-znacheniya
...
Рейтинг: 0 / 0
19.01.2018, 11:46
    #39586952
Соединить 5 таблиц по ключу и с distinct
Ролг Хупин,

поверь, их далеко не две.... история про дырки и их бурении уже не первую неделю тут развивается...
...
Рейтинг: 0 / 0
19.01.2018, 12:00
    #39586962
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
Добрый Э - ЭхРолг Хупин,
поверь, их далеко не две.... история про дырки и их бурении уже не первую неделю тут развивается...
Не дырки, а скважины... и не развиваются, а углубляются :)
...
Рейтинг: 0 / 0
19.01.2018, 12:19
    #39586979
Соединить 5 таблиц по ключу и с distinct
Руслан Дамирович,

таки дырки... если я правильно понимаю основное значение английского слова "HOLE"
скважины, в геологическом смысле, это, наверное, "WELL" должно было быть...
...
Рейтинг: 0 / 0
19.01.2018, 12:33
    #39586988
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединить 5 таблиц по ключу и с distinct
Добрый Э - ЭхРуслан Дамирович,

таки дырки... если я правильно понимаю основное значение английского слова "HOLE"
скважины, в геологическом смысле, это, наверное, "WELL" должно было быть...
ИМО
Прежде чем качать золото из OIL WELL, нужно сначала найти OIL DEPOSIT, а затем DRILL A HOLE TO THE DEPOSIT.
Как говорил мой учитель труда, показывая на дыру в заготовке - "Дырка - в заднице, а это - отверстие". В смысле есть термин "скважина" относительно бурения - его и нужно применять. А "колодец" - это уже когда скважину пробурили и укрепили стенки.

Но мы уходим в жесткий оффтопик :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Соединить 5 таблиц по ключу и с distinct / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]