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

Откуда:
Сообщений: 261
Уважаемые форумчани. Пытаюсь сделать сводную таблицу, но у меня не выходит. Есть таблицы
Первая HOLECOORD (holeid, projectcode, coordinateset, x,y,z)
Вторая HOLEDETAILS (holeid, projectcode, name, value)
Третья DRILLHOLEDIAMDETAILS (holeid, projectcode, name, value)
Четвертая HOLESURVEY (holeid, projectcode, depth, azimuth, dip, azimuthGridName)
Пятая DRILLINGDETAIL (drillingdate, shift, holeid, projectcode, name, value)

Нужно из этих таблиц сделать сводную таблицу, какие скважины бурили на месторождении UZ к примеру 28 октября

Скрипт отображает все, кроме азимута и угла (Azimuth, dip) Наверное, это потому что замеры делали много раз на одну скважину, поэтому, а мне нужен только первый, поэтому я использовала min, или потому что у этой таблицы нет дат никаких и при указании даты не работает... Когда из условия убираю дату, то работает (дублируется правда по сто раз, но работает)
Помогите, пожалуйста
P.s. просьба к формату даты не цеплятся, программа в которой я работаю понимает именно такие даты, изменения в формата в DATE ничего не дает и не меняет работу скрипта

Вот такой у меня скрипт:
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
19 янв 18, 09:15    [21118719]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
Добрый Э - Эх
Guest
katish444,

не понятно, что именно тебе нужно...
если нужно выбрать только первую строку в группе, то можно почитать тут...
если нужно что-то другое - объясни, что именно. и лучше не на примере неработающего запроса, а с тестовыми данными и желаемым результатом на них...
19 янв 18, 09:36    [21118785]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх,
пытаюсь получить таблицу как на скриншоте
Сейчас опишу подробно

К сообщению приложен файл. Размер - 26Kb
19 янв 18, 10:12    [21118972]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
katish444
Member

Откуда:
Сообщений: 261
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')


Вот таблица на которой должен сработать мой скрипт
19 янв 18, 10:33    [21119070]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
katish444
Member

Откуда:
Сообщений: 261
Блин, не могу эту тему удалить и случайно продублировала. Прошу прощения
19 янв 18, 10:37    [21119097]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
Добрый Э - Эх
Guest
katish444
Блин, не могу эту тему удалить и случайно продублировала. Прошу прощения
редактирование сообщений и их удаление - не предусмотрено движком форума. Тут реализована древняя народная мудрость - "что написано пером, то не вырубить топором" ;)
19 янв 18, 10:39    [21119106]     Ответить | Цитировать Сообщить модератору
 Re: Не выводит существующие значения  [new]
katish444
Member

Откуда:
Сообщений: 261
Добрый Э - Эх,
пока писала, нашла ошибку и теперь все работает)))
Всем спасибо
19 янв 18, 10:53    [21119192]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить