Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как объяснить базе данных, что мне необходимо ближайшее значение / 24 сообщений из 24, страница 1 из 1
25.04.2018, 07:22
    #39635762
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Пыталась решить проблему с float/varchar, которая мне ничего не дала....
Вообщем, попытаюсь объяснить человеческим языком.
Есть геологическое описание скважины. Например from 1000м to 1200м - "алевролиты", но эти 200 метров бурили не в один день, конечно, а недельку. И для суточного отчета по бурению, надо это геологическое описание вытянуть только на тот интервал, который пробурили сегодня. К примеру с 1122 до 1150. Этот интервал полностью попадает. Вот как базе объяснить, что надо брать ближайшее число from и выдавать описание. А если бурили с 1190 до 1225. Тут захватывает уже новый интервал геологического описания. Не могу придумать, как же выпросить у БД именно те интервалы, которые мне нужны.
Есть такая функция, не равно, не больше/равно, а именно ближайшее число. Может Abs(Min(From - EventFromDay)), только не соображу как это в условии прописать


Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
25.04.2018, 07:34
    #39635767
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Select 
a.[ID_Скважины],
case a.From<b.From Then b.From Else a.From end as [From],
case a.To>b.To Then b.To Else a.To end as [To],
a.[СуточноеОписание],
b.[ОписаниеСлояСкважины]
From 
[СуточныеДанные] a
join [ОписаниеСкважины] b 
 on a.[ID_Скважины] = b.[ID_Скважины] 
and a.From<b.To
and a.To>b.From
Where a.[Дата] = @Date
...
Рейтинг: 0 / 0
25.04.2018, 07:36
    #39635771
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,

Если за сутки надо показать только один слой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Select 
a.[ID_Скважины],
case a.From<b.From Then b.From Else a.From end as [From],
case a.To>b.To Then b.To Else a.To end as [To],
a.[СуточноеОписание],
b.[ОписаниеСлояСкважины]
From 
[СуточныеДанные] a
Outer apply (
Select top 1 b.* From [ОписаниеСкважины] b 
Where a.[ID_Скважины] = b.[ID_Скважины] 
and a.From<b.To
Order by b.From) b
Where a.[Дата] = @Date
...
Рейтинг: 0 / 0
25.04.2018, 07:49
    #39635780
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopellykatish444,

Если за сутки надо показать только один слой:
Код: sql
1.
2.
3.
4.
5.
Select 
a.[ID_Скважины],
case a.From<b.From Then b.From Else a.From end as [From],
case a.To>b.To Then b.To Else a.To end as [To],
...


Спасибо большое
Сейчас разберусь и буду думать как эту уловку вставить в мой скрипт :-)
Что бы я делала без тебя, билась бы, наверное, головой о стену.... Спасибо!
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
SELECT  TOP 100 PERCENT DRILLINGDETAIL.HOLEID,
case row_number() over(partition by DRILLINGDETAIL.holeid order by tab3.geol_from) when 1 then DRILLINGDETAIL.HOLEID end as x_holeid,
DRILLINGDETAIL.DRILLINGDATE,   DRILLINGDETAIL.PROJECTCODE,  Cast(max(tab3.geol_from) as float)as GeolFrom, max(tab3.geol_to)GeolTo, 
 tab3.[Primary Lithology] ,EventFromDAY,EventTODAY,EventFromNight,EventTOnight
 
					FROM 
					DRILLINGDETAIL

					left join

					(Select holeid,
					 max(   case
				   when [DRILLINGDETAIL].[NAME] = 'EventFrom' and [Shift]='day' then
					   [DRILLINGDETAIL].[VALUE]
				   else
					   ''
			   end)EventFromDAY 
			   ,max(   case
				   when [DRILLINGDETAIL].[NAME] = 'Eventto'  and [Shift]='day'then
					   [DRILLINGDETAIL].[VALUE]
				   else
					   ''
			   end)EventTODAY
			 ,
			 max(   case
				   when [DRILLINGDETAIL].[NAME] = 'EventFrom' and [Shift]='night' then
					   [DRILLINGDETAIL].[VALUE]
				   else
					   ''
			   end)EventFromnight
			   ,max(   case
				   when [DRILLINGDETAIL].[NAME] = 'Eventto'  and [Shift]='night'then
					   [DRILLINGDETAIL].[VALUE]
				   else
					   ''
			   end)EventTOnight 
					FROM 
					DRILLINGDETAIL
					group by HOLEID)tab8 on tab8.HOLEID=DRILLINGDETAIL.HOLEID

LEFT Join 


 ( select holeid,
 case row_number() over(partition by a.holeid order by a.geolfrom) when 1 then a.holeid end as x_holeid, 
case row_number() over(partition by a.holeid,a.geolfrom order by a.geolfrom) when 1 then a.GEOLFROM end as geol_from,
case row_number() over(partition by a.holeid,a.geolfrom,a.geolto order by a.geolfrom) when 1 then a.GEOLTO end as geol_to,
case row_number() over(partition by a.holeid,a.geolfrom,a.geolto,[a].Primary_Lithology_rus_Desc_D order by a.geolfrom) when 1 then [a].Primary_Lithology_rus_Desc_D end as 'Primary Lithology'



 from

( SELECT  TOP 100 PERCENT * FROM (SELECT * FROM (SELECT TOP 100 PERCENT * FROM (SELECT TOP 100 PERCENT [HOLEID], [PROJECTCODE], [GEOLFROM], [GEOLTO], [PRIORITY],  ( CASE WHEN [ACQDERIVEDVIEW].[Lith_RockName_Desc_D] is null THEN '' ELSE [ACQDERIVEDVIEW].[Lith_RockName_Desc_D]
END +
CASE WHEN str([ACQDERIVEDVIEW].[Lith1_pct]) is null THEN '' ELSE '(' + ltrim(str([ACQDERIVEDVIEW].[Lith1_pct])) + '%' + ')'
END + 
CASE WHEN [ACQDERIVEDVIEW].[Lith_Colour_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith_Colour_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Texture_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith1_Texture_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Structure_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith1_Structure_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_RockName_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_RockName_Desc_D]
END +
CASE WHEN str([ACQDERIVEDVIEW].[Lith2_pct]) is null THEN '' ELSE '(' + ltrim(str([ACQDERIVEDVIEW].[Lith2_pct])) + '%' + ')'
END + 
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Colour_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_Colour_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Texture_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_Texture_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Structure_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_Structure_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_Comments] is null THEN '' ELSE ', ( ' + [ACQDERIVEDVIEW].[Lith_Comments] + ')'
END
 )  AS [Primary_Lithology_Desc_D],  ( CASE WHEN [ACQDERIVEDVIEW].[Lith_CompRock_rus_Desc_D] is null THEN '' ELSE  [ACQDERIVEDVIEW].[Lith_CompRock_rus_Desc_D]+': '
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_RockName_rus_Desc_D] is null THEN '' ELSE [ACQDERIVEDVIEW].[Lith_RockName] + ' - ' + [ACQDERIVEDVIEW].[Lith_RockName_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_pct] = 100 THEN ',' ELSE '(' + ltrim(str([ACQDERIVEDVIEW].[Lith1_pct])) + '%' + '),'
END + 
CASE WHEN [ACQDERIVEDVIEW].[Lith_Colour_Int_rus_Desc_D] is null THEN '' ELSE  ' ' +  [ACQDERIVEDVIEW].[Lith_Colour_Int_rus_Desc_D] 
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_Colour_rus_Desc_D] is null THEN '' ELSE ' ' +  [ACQDERIVEDVIEW].[Lith_Colour_rus_Desc_D] + ' &#246;&#226;&#229;&#242;, '
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_Colour2_Int_rus_Desc_D] is null THEN '' ELSE [ACQDERIVEDVIEW].[Lith_Colour2_Int_rus_Desc_D] 
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_Colour2_rus_Desc_D] is null THEN '' ELSE  [ACQDERIVEDVIEW].[Lith_Colour2_rus_Desc_D] + ' - &#226;&#242;&#238;&#240;&#238;&#241;&#242;&#229;&#239;&#229;&#237;&#237;&#251;&#233; &#246;&#226;&#229;&#242; '
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Texture_rus_Desc_D] is null THEN '' ELSE '&#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#224; ' + [ACQDERIVEDVIEW].[Lith1_Texture_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Texture2_rus_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith1_Texture2_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Structure_rus_Desc_D] is null THEN '' ELSE ', &#242;&#229;&#234;&#241;&#242;&#243;&#240;&#224; ' + [ACQDERIVEDVIEW].[Lith1_Structure_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith1_Structure2_rus_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith1_Structure2_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_RockName_rus_Desc_D] is null THEN '' ELSE '; ' + [ACQDERIVEDVIEW].[Lith2_RockName] + ' - ' + [ACQDERIVEDVIEW].[Lith2_RockName_rus_Desc_D]
END +
CASE WHEN str([ACQDERIVEDVIEW].[Lith2_pct]) is null THEN '' ELSE '(' + ltrim(str([ACQDERIVEDVIEW].[Lith2_pct])) + '%' + ')'
END + 
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Colour_rus_Desc_D] is null THEN '' ELSE ', &#246;&#226;&#229;&#242; ' + [ACQDERIVEDVIEW].[Lith2_Colour_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Texture_rus_Desc_D] is null THEN '' ELSE ', &#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#224; ' + [ACQDERIVEDVIEW].[Lith2_Texture_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Texture2_rus_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_Texture2_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Structure_rus_Desc_D] is null THEN '' ELSE ', &#242;&#229;&#234;&#241;&#242;&#243;&#240;&#224; ' + [ACQDERIVEDVIEW].[Lith2_Structure_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith2_Structure2_rus_Desc_D] is null THEN '' ELSE ', ' + [ACQDERIVEDVIEW].[Lith2_Structure2_rus_Desc_D]
END +
CASE WHEN [ACQDERIVEDVIEW].[Lith_Comments] is null THEN '' ELSE ', ( ' + [ACQDERIVEDVIEW].[Lith_Comments] + ')'
END  )  AS [Primary_Lithology_rus_Desc_D] FROM ( SELECT TOP 100 PERCENT  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_Colour'
and LOOKUP = [DFINDF].[Lith_Colour]
and ACTIVE = 1

 )  AS [Lith_Colour_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_RockName'
and LOOKUP = [DFINDF].[Lith_RockName]
and ACTIVE = 1 )  AS [Lith_RockName_Desc_D],  ( select LOWER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Structure'
and LOOKUP = [DFINDF].[Lith1_Structure]
and ACTIVE = 1 )  AS [Lith1_Structure_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Texture'
and LOOKUP = [DFINDF].[Lith1_Texture]
and ACTIVE = 1 )  AS [Lith1_Texture_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Colour'
and LOOKUP = [DFINDF].[Lith2_Colour]
and ACTIVE = 1 )  AS [Lith2_Colour_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_RockName'
and LOOKUP = [DFINDF].[Lith2_RockName]
and ACTIVE = 1 )  AS [Lith2_RockName_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Structure'
and LOOKUP = [DFINDF].[Lith2_Structure]
and ACTIVE = 1 )  AS [Lith2_Structure_Desc_D],  ( select UPPER(LEFT(DESCRIPTION,1))+LOWER(STUFF(DESCRIPTION,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Texture'
and LOOKUP = [DFINDF].[Lith2_Texture]
and ACTIVE = 1 )  AS [Lith2_Texture_Desc_D],  ( select UPPER(LEFT(Reportdesc,1))+UPPER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_CompRock'
and LOOKUP = [DFINDF].[Lith_CompRock]
and ACTIVE = 1 )  AS [Lith_CompRock_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_RockName'
and LOOKUP = [DFINDF].[Lith_RockName]
and ACTIVE = 1
 )  AS [Lith_RockName_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1)) +LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_Colour_Int'
and LOOKUP = [DFINDF].[Lith_Colour_Int]
and ACTIVE = 1

 )  AS [Lith_Colour_Int_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1)) +LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_Colour'
and LOOKUP = [DFINDF].[Lith_Colour]
and ACTIVE = 1

 )  AS [Lith_Colour_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1)) +LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_Colour2_Int'
and LOOKUP = [DFINDF].[Lith_Colour2_Int]
and ACTIVE = 1

 )  AS [Lith_Colour2_Int_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1)) +LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith_Colour2'
and LOOKUP = [DFINDF].[Lith_Colour2]
and ACTIVE = 1

 )  AS [Lith_Colour2_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Texture'
and LOOKUP = [DFINDF].[Lith1_Texture]
and ACTIVE = 1 )  AS [Lith1_Texture_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Texture2'
and LOOKUP = [DFINDF].[Lith1_Texture2]
and ACTIVE = 1 )  AS [Lith1_Texture2_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Structure'
and LOOKUP = [DFINDF].[Lith1_Structure]
and ACTIVE = 1 )  AS [Lith1_Structure_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith1_Structure2'
and LOOKUP = [DFINDF].[Lith1_Structure2]
and ACTIVE = 1 )  AS [Lith1_Structure2_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_RockName'
and LOOKUP = [DFINDF].[Lith2_RockName]
and ACTIVE = 1 )  AS [Lith2_RockName_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Colour'
and LOOKUP = [DFINDF].[Lith2_Colour]
and ACTIVE = 1 )  AS [Lith2_Colour_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Texture'
and LOOKUP = [DFINDF].[Lith2_Texture]
and ACTIVE = 1 )  AS [Lith2_Texture_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Texture2'
and LOOKUP = [DFINDF].[Lith2_Texture2]
and ACTIVE = 1 )  AS [Lith2_Texture2_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Structure'
and LOOKUP = [DFINDF].[Lith2_Structure]
and ACTIVE = 1 )  AS [Lith2_Structure_rus_Desc_D],  ( select LOWER(LEFT(Reportdesc,1))+LOWER(STUFF(Reportdesc,1,1,'')) from QV_VS_LOOKUP_RO
where FIELDTABLE = 'GEOLOGYCODESECONDARY'
and FIELDNAME = 'Lith2_Structure2'
and LOOKUP = [DFINDF].[Lith2_Structure2]
and ACTIVE = 1 )  AS [Lith2_Structure2_rus_Desc_D], [HOLEID], [PROJECTCODE], [GEOLFROM], [GEOLTO], [PRIORITY], [Lith_Comments], [Lith1_pct], [Lith2_pct], [Lith_RockName], [Lith2_RockName] 
FROM  (  SELECT [GEOINTERVAL].[HOLEID], [GEOINTERVAL].[PROJECTCODE], [GEOINTERVAL].[GEOLFROM], [GEOINTERVAL].[GEOLTO], [GEOINTERVAL].[PRIORITY], [GEODETAILS].[Lith_Colour], 
[GEOBIGCOMMENT].[Lith_Comments], [GEODETAILS].[Lith_RockName], CAST([GEODETAILS].[Lith1_pct] AS FLOAT) AS [Lith1_pct], [GEODETAILS].[Lith1_Structure], [GEODETAILS].[Lith1_Texture],
 [GEODETAILS].[Lith2_Colour], CAST([GEODETAILS].[Lith2_pct] AS FLOAT) AS [Lith2_pct], [GEODETAILS].[Lith2_RockName], [GEODETAILS].[Lith2_Structure], [GEODETAILS].[Lith2_Texture], 
 [GEODETAILS].[Lith_CompRock], [GEODETAILS].[Lith_Colour_Int], [GEODETAILS].[Lith_Colour2_Int], [GEODETAILS].[Lith_Colour2], [GEODETAILS].[Lith1_Texture2], [GEODETAILS].[Lith1_Structure2],
  [GEODETAILS].[Lith2_Texture2], [GEODETAILS].[Lith2_Structure2] FROM [GEOINTERVAL] INNER JOIN (SELECT * FROM [HOLELOCATION]) AS [CollarWSF] ON [CollarWSF].[HOLEID] = [GEOINTERVAL].[HOLEID]
    AND [CollarWSF].[PROJECTCODE] = [GEOINTERVAL].[PROJECTCODE] AND [CollarWSF].[HOLETYPE] = 'DRILLHOLE' LEFT JOIN (SELECT [GEODETAILS].[HOLEID], [GEODETAILS].[PROJECTCODE], [GEODETAILS].[GEOLFROM],
	 [GEODETAILS].[GEOLTO], [GEODETAILS].[PRIORITY], min(CASE when [GEODETAILS].[NAME] = 'Lith_Colour' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_Colour], min(CASE when [GEODETAILS].[NAME] = 'Lith_RockName' 
	 then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_RockName], min(CASE when [GEODETAILS].[NAME] = 'Lith1_pct' then CAST([GEODETAILS].[VALUE] AS FLOAT) ELSE NULL END) as [Lith1_pct], min(CASE when [GEODETAILS].[NAME] = 'Lith1_Structure' 
	 then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith1_Structure], min(CASE when [GEODETAILS].[NAME] = 'Lith1_Texture' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith1_Texture], min(CASE when [GEODETAILS].[NAME] = 'Lith2_Colour' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_Colour], 
min(CASE when [GEODETAILS].[NAME] = 'Lith2_pct' then CAST([GEODETAILS].[VALUE] AS FLOAT) ELSE NULL END) as [Lith2_pct], min(CASE when [GEODETAILS].[NAME] = 'Lith2_RockName' 
then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_RockName], min(CASE when [GEODETAILS].[NAME] = 'Lith2_Structure' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_Structure], min(CASE when [GEODETAILS].[NAME] = 'Lith2_Texture' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_Texture],
 min(CASE when [GEODETAILS].[NAME] = 'Lith_CompRock' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_CompRock], min(CASE when [GEODETAILS].[NAME] = 'Lith_Colour_Int' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_Colour_Int], min(CASE when [GEODETAILS].[NAME] = 'Lith_Colour2_Int'
  then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_Colour2_Int], min(CASE when [GEODETAILS].[NAME] = 'Lith_Colour2' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith_Colour2], min(CASE when [GEODETAILS].[NAME] = 'Lith1_Texture2' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith1_Texture2], 
  min(CASE when [GEODETAILS].[NAME] = 'Lith1_Structure2' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith1_Structure2], min(CASE when [GEODETAILS].[NAME] = 'Lith2_Texture2' then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_Texture2], min(CASE when [GEODETAILS].[NAME] = 'Lith2_Structure2' 
  then [GEODETAILS].[VALUE] ELSE NULL END) as [Lith2_Structure2] FROM [GEODETAILS] GROUP BY [GEODETAILS].[PROJECTCODE], [GEODETAILS].[PRIORITY], [GEODETAILS].[GEOLTO], [GEODETAILS].[GEOLFROM], [GEODETAILS].[HOLEID])[GEODETAILS] ON [GEOINTERVAL].[PROJECTCODE] = [GEODETAILS].[PROJECTCODE] 
  AND [GEOINTERVAL].[PRIORITY] = [GEODETAILS].[PRIORITY] AND [GEOINTERVAL].[GEOLTO] = [GEODETAILS].[GEOLTO] AND [GEOINTERVAL].[GEOLFROM] = [GEODETAILS].[GEOLFROM] AND [GEOINTERVAL].[HOLEID] = [GEODETAILS].[HOLEID] LEFT JOIN (SELECT [GEOBIGCOMMENT].[HOLEID], [GEOBIGCOMMENT].[PROJECTCODE], 
  [GEOBIGCOMMENT].[GEOLFROM], [GEOBIGCOMMENT].[GEOLTO], [GEOBIGCOMMENT].[PRIORITY], 
min(CASE when [GEOBIGCOMMENT].[NAME] = 'Lith_Comments' 
then [GEOBIGCOMMENT].[VALUE] ELSE NULL END) as [Lith_Comments] FROM [GEOBIGCOMMENT] WHERE [GEOBIGCOMMENT].[NAME] IN ('Lith_Comments') 
GROUP BY [GEOBIGCOMMENT].[PROJECTCODE], [GEOBIGCOMMENT].[PRIORITY], [GEOBIGCOMMENT].[GEOLTO], [GEOBIGCOMMENT].[GEOLFROM], [GEOBIGCOMMENT].[HOLEID])[GEOBIGCOMMENT] 
ON [GEOINTERVAL].[PROJECTCODE] = [GEOBIGCOMMENT].[PROJECTCODE] AND [GEOINTERVAL].[PRIORITY] = [GEOBIGCOMMENT].[PRIORITY] AND [GEOINTERVAL].[GEOLTO] = [GEOBIGCOMMENT].[GEOLTO]
 AND [GEOINTERVAL].[GEOLFROM] = [GEOBIGCOMMENT].[GEOLFROM] AND [GEOINTERVAL].[HOLEID] = [GEOBIGCOMMENT].[HOLEID] WHERE ([Lith_Colour] IS NOT NULL OR [Lith_Comments] IS NOT NULL 
 OR [Lith_RockName] IS NOT NULL OR [Lith1_pct] IS NOT NULL OR [Lith1_Structure] IS NOT NULL OR [Lith1_Texture] IS NOT NULL OR [Lith2_Colour] IS NOT NULL OR [Lith2_pct] IS NOT NULL
  OR [Lith2_RockName] IS NOT NULL OR [Lith2_Structure] IS NOT NULL OR [Lith2_Texture] IS NOT NULL OR [Lith_CompRock] IS NOT NULL OR [Lith_Colour_Int] IS NOT NULL OR [Lith_Colour2_Int] IS NOT NULL 
  OR [Lith_Colour2] IS NOT NULL OR [Lith1_Texture2] IS NOT NULL OR [Lith1_Structure2] IS NOT NULL OR [Lith2_Texture2] IS NOT NULL OR [Lith2_Structure2] IS NOT NULL)  ) [DFINDF]) [ACQDERIVEDVIEW]) [ACQTMP]  ) AS [TMPVIEW915]) [TMPSQLSHEETVIEW]) a

)tab3 on


 tab3.holeid=DRILLINGDETAIL.HOLEID where [DRILLINGDETAIL].[PROJECTCODE] = 'ma' 
 ---and x_holeid='makh-17-005'
 cast(DRILLINGDETAIL.DRILLINGDATE as datetime)= '15-jul-2017' and geol_from<=(cast(EventFromDAY as float))<=geol_to

 group by   DRILLINGDETAIL.HOLEID, DRILLINGDETAIL.PROJECTCODE, tab3.[Primary Lithology] ,DRILLINGDETAIL.DRILLINGDATE,tab3.geol_from,tab3.geol_to,tab3.x_holeid ,tab3.holeid,EventFromDAY ,EventTODAY,EventFromNight,EventTOnight
 
 ORDER BY cast(DRILLINGDETAIL.DRILLINGDATE as datetime),tab3.holeid,tab3.x_holeid desc,geol_from

...
Рейтинг: 0 / 0
25.04.2018, 07:52
    #39635781
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,

ОДин слой за сутки наверно так правильнее будет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Select 
a.[ID_Скважины],a.[From],a.[To],a.[СуточноеОписание],
b.[ОписаниеСлояСкважины]
From 
[СуточныеДанные] a
join [ОписаниеСкважины] b 
 on a.[ID_Скважины] = b.[ID_Скважины] 
and a.From<b.To
and a.To>b.From
Where a.[Дата] = @Date
...
Рейтинг: 0 / 0
25.04.2018, 09:11
    #39635810
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopellykatish444,

ОДин слой за сутки наверно так правильнее будет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Select 
a.[ID_Скважины],a.[From],a.[To],a.[СуточноеОписание],
b.[ОписаниеСлояСкважины]
From 
[СуточныеДанные] a
join [ОписаниеСкважины] b 
 on a.[ID_Скважины] = b.[ID_Скважины] 
and a.From<b.To
and a.To>b.From
Where a.[Дата] = @Date


Нет, если я правильно поняла, то это не пойдет. Ведь значений, где
Код: sql
1.
2.
and a.From<b.To
and a.To>b.From

очень много. Все значения меньше 1122, к примеру будут меньше...
...
Рейтинг: 0 / 0
25.04.2018, 10:03
    #39635843
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,

Че-то туплю, для одного слоя:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Select 
a.[ID_Скважины],a.[From],a.[To],
a.[СуточноеОписание],
b.[ОписаниеСлояСкважины]
From 
[СуточныеДанные] a
Outer apply (
Select top 1 b.* From [ОписаниеСкважины] b 
Where a.[ID_Скважины] = b.[ID_Скважины] 
and a.From<b.To
Order by b.From) b
Where a.[Дата] = @Date
...
Рейтинг: 0 / 0
25.04.2018, 11:08
    #39635896
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,
спасибо большущее!
С меня шоколадка)))
...
Рейтинг: 0 / 0
25.04.2018, 11:40
    #39635924
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
сдаётся мне, вам бы там процедурка с циклом не помешала
...
Рейтинг: 0 / 0
25.04.2018, 11:55
    #39635943
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
tip78сдаётся мне, вам бы там процедурка с циклом не помешала
курсор + цикл, шобы всё как у людей
...
Рейтинг: 0 / 0
25.04.2018, 12:27
    #39635961
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
tip78сдаётся мне, вам бы там процедурка с циклом не помешала
я не умею...
...
Рейтинг: 0 / 0
25.04.2018, 12:28
    #39635965
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,не сработало. Он не выдает значение описания скважины. Пишет NULL

Код: 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.
Select 
a.[holeid],a.[EventFromDAY],a.[EventTOnight],
a.[DRILLINGDATE],
(   case
				   when b.[NAME] = 'Lith_RockName'  then
					  b.[VALUE] end)Lith_RockName
From 
(Select holeid,drillingdate,
					 max(   case
				   when [DRILLINGDETAIL].[NAME] = 'EventFrom' and [Shift]='day' then
					   [DRILLINGDETAIL].[VALUE]
				   
			   end)EventFromDAY 
			  
			   ,max(   case
				   when [DRILLINGDETAIL].[NAME] = 'Eventto'  and [Shift]='night'then
					   [DRILLINGDETAIL].[VALUE]
				  
			   end)EventTOnight 
					FROM 
					DRILLINGDETAIL
					group by HOLEID,drillingdate) a

Outer apply (
Select top 1 b.* From [Geodetails] b 
Where a.[HOLEID] = b.[HOLEID] 
and a.EventFromDAY<b.GEOLTO
Order by b.GEOLTO) b

Where a.[DRILLINGDATE] = '15-jul-2017'
Group by a.[holeid],a.[DRILLINGDATE],a.[EventFromDAY],a.[EventTOnight],b.NAME,b.VALUE
...
Рейтинг: 0 / 0
25.04.2018, 12:30
    #39635966
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
TaPaK, да не могу я так. Руки то у меня кривые)))
SQL изучала на каком-то курсе в школе...Все на этом...
...
Рейтинг: 0 / 0
25.04.2018, 12:31
    #39635967
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,
вот...
...
Рейтинг: 0 / 0
25.04.2018, 12:41
    #39635970
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,
Вот так выглядят таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare  @geodetails  table (holeid varchar(255),projectcode varchar(255),  geofrom float, geoto float,[value] varchar(255), name varchar(20))
insert into @assay  (holeid,projectcode ,  geofrom , geoto ,[value] , name) values ('UZ-001', 'uz', 1075, 1320,'AL','Lith_RockName')
insert into @assay  (holeid,projectcode ,  geofrom , geoto ,[value] , name) values ('UZ-001', 'uz', 1045, 1075,'Br','Lith_RockName')

declare  @drillingdetail  table (holeid varchar(255),drillingdate varchar(255),  varchar(255), name varchar(20))
insert into @drillingdetail  (holeid,drillingdate ,  [value] , name) values ('UZ-001','15-jul-2017', 'EventFrom','1040')
insert into @drillingdetail  (holeid,drillingdate ,  [value] , name) values ('UZ-001','15-jul-2017', 'EventTo','1060')
insert into @drillingdetail  (holeid,drillingdate ,  [value] , name) values ('UZ-001','16-jul-2017', 'EventFrom','1150')
insert into @drillingdetail  (holeid,drillingdate ,  [value] , name) values ('UZ-001','16-jul-2017', 'EventTo','1172')



Получить надо примерно как на картинке ниже
...
Рейтинг: 0 / 0
25.04.2018, 12:41
    #39635971
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,
...
Рейтинг: 0 / 0
25.04.2018, 12:42
    #39635974
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,

Судя по всему не повезло - у первой попавшейся записи [NAME] <> 'Lith_RockName'

Код: 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.
Select 
a.[holeid],a.[EventFromDAY],a.[EventTOnight],
a.[DRILLINGDATE],
b.[VALUE] Lith_RockName
From 
(Select holeid,drillingdate,
					 max(   case
				   when [DRILLINGDETAIL].[NAME] = 'EventFrom' and [Shift]='day' then
					   [DRILLINGDETAIL].[VALUE]
				   
			   end)EventFromDAY 
			  
			   ,max(   case
				   when [DRILLINGDETAIL].[NAME] = 'Eventto'  and [Shift]='night'then
					   [DRILLINGDETAIL].[VALUE]
				  
			   end)EventTOnight 
					FROM 
					DRILLINGDETAIL
					group by HOLEID,drillingdate) a

Outer apply (
Select top 1 b.* From [Geodetails] b 
Where a.[HOLEID] = b.[HOLEID] 
and a.EventFromDAY<b.GEOLTO
and b.[NAME] = 'Lith_RockName'
Order by b.GEOLTO) b

Where a.[DRILLINGDATE] = '15-jul-2017'
Group by a.[holeid],a.[DRILLINGDATE],a.[EventFromDAY],a.[EventTOnight],b.NAME,b.VALUE
...
Рейтинг: 0 / 0
25.04.2018, 12:49
    #39635978
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,
О, боги Олимпа!
У тебя снова получилось!
Спасибо большое!
...
Рейтинг: 0 / 0
25.04.2018, 12:54
    #39635981
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopelly,
рано я обрадовалась. Если интервал бурения попадает в два интервала описания, то он берет только первый....
Вот например тут должна быть еще строчка...
С геологическим описанием, т.к. в таблице описания интервалы 1136-1175 и следующий 1175-1183
...
Рейтинг: 0 / 0
25.04.2018, 12:57
    #39635986
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444,

в принципе, я сделала top 2 врядли они будут бурить больше 40 метров в день. Спасибо
...
Рейтинг: 0 / 0
25.04.2018, 13:05
    #39635989
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
katish444Kopelly,
рано я обрадовалась. Если интервал бурения попадает в два интервала описания, то он берет только первый....
Вот например тут должна быть еще строчка...
С геологическим описанием, т.к. в таблице описания интервалы 1136-1175 и следующий 1175-1183

Я же тебе уже писал как получить все слои за день
...
Рейтинг: 0 / 0
25.04.2018, 13:30
    #39636005
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Kopellykatish444Kopelly,
рано я обрадовалась. Если интервал бурения попадает в два интервала описания, то он берет только первый....
Вот например тут должна быть еще строчка...
С геологическим описанием, т.к. в таблице описания интервалы 1136-1175 и следующий 1175-1183

Я же тебе уже писал как получить все слои за день

Потому что я глупая, я же вставляю твои идеи в свой скрипт, вот кряхтела я долго - не сработало!
Думаю не катит, и что оказалось?! Я просто не заметила, что там WHEN в кейсах не хватает
Спасибо большое! Сейчас думаю все попрет!
...
Рейтинг: 0 / 0
25.04.2018, 16:22
    #39636170
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Наймите уже Kopelly в штат внештатным консультантом.
...
Рейтинг: 0 / 0
26.04.2018, 09:24
    #39636569
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как объяснить базе данных, что мне необходимо ближайшее значение
Руслан ДамировичНаймите уже Kopelly в штат внештатным консультантом.
давно пора)))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как объяснить базе данных, что мне необходимо ближайшее значение / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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