powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
12 сообщений из 12, страница 1 из 1
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645277
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро.
Ребят, у меня проблемка и я не знаю с какой стороны к ней подобраться.
Есть у меня выборка, которая показывает какие данные загружены в базу данных.
В моем случае, это данные геофизического каротажа, то есть ИМЯ СКВАЖИНЫ, ГАММА, ВЫЗВ.ПОЛЯРИЗАЦИЯ, КАЖ.СОПРОТИВЛЕНИЕ и т.д.
Вот такие столбцы. Если эти значения есть в базе, то "да", если пусто, то "нет". Но тут вдруг всплыло, что иногда замеры начинали с середины скважины, то есть до 50м, к примеру гамма не замеряли, а от 50 до 100 измерили, а потом снова не замеряли, вот и получается, что он мне по 3-4 раза одну скважину рисует. А мне надо, чтобы "если хоть где-то по скважине есть "да", то он на всю скважину ставил "да" и глубины меня не интересуют.
Пыталась использовать
Код: sql
1.
case row_number() over(partition by...

но не вышло
Помогите идеями, пожалуйста. В какую сторону смотреть?

Код: 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.
Select distinct top 100 PROJECTCODE,HOLEID
,case when [AR_Om_m] is null THEN 'r'
   ELSE 'a' END [AR_Om_m]
,case when [GR_K_cps] is null THEN 'r'
   ELSE 'a' END [GR_K_cps]
,case when [GR_mkRph] is null THEN 'r'
   ELSE 'a' END [GR_mkRph]
   ,case when [GR_U_cps] is null THEN 'r'
   ELSE 'a' END [GR_U_cps]
,case when [MS_10ppm_u_SI] is null THEN 'r'
   ELSE 'a' END [MS_10ppm_u_SI]
,case when [IC_mSipm] is null THEN 'r'
   ELSE 'a' END [IC_mSipm]
   ,case when [GR_Th_cps] is null THEN 'r'
   ELSE 'a' END [GR_Th_cps]
,case when [GR_Tc_cps] is null THEN 'r'
   ELSE 'a' END [GR_Tc_cps]
,case when [H_nTl] is null THEN 'r'
   ELSE 'a' END [H_nTl]
   ,case when [NP_mV] is null THEN 'r'
   ELSE 'a' END [NP_mV]
,case when [IP_2_pct] is null THEN 'r'
   ELSE 'a' END [IP_2_pct]
,case when [IP_16_pct] is null THEN 'r'
   ELSE 'a' END [IP_16_pct]
   ,case when [IP_10_pct] is null THEN 'r'
   ELSE 'a' END [IP_10_pct]
,case when [IP_04_pct] is null THEN 'r'
   ELSE 'a' END [IP_04_pct]
,case when [I_ab_mA] is null THEN 'r'
   ELSE 'a' END [I_ab_mA]
   ,case when [R_Om] is null THEN 'r'
   ELSE 'a' END [R_Om]
,case when [GR_Tc_cps] is null THEN 'r'
   ELSE 'a' END [GR_Tc_cps]
,case when [T_res_C_ddeg] is null THEN 'r'
   ELSE 'a' END [T_res_C_ddeg]
   ,case when [MS_cor_mSi] is null THEN 'r'
   ELSE 'a' END [MS_cor_mSi] 
   ,case when [Spd_mph] is null THEN 'r'
   ELSE 'a' END [Spd_mph]
,case when [SPV_mV] is null THEN 'r'
   ELSE 'a' END [SPV_mV]
   ,case when [U0] is null THEN 'r'
   ELSE 'a' END [U0]from 
(SELECT TOP 100 PERCENT * FROM (SELECT * FROM (SELECT TOP 100 PERCENT * FROM  (SELECT [HOLEID], [PROJECTCODE], [DEPTHSTEP], [RUN], [PRIORITY], [DEPTH], [AR_Om_m], [Ax_ddeg], [Az_ddeg], [Az_mag_ddeg], [Az_spline_ddeg], [Dip_ddeg]
, [Dip_spline_ddeg], [DISTC], [GR_K_cps], [GR_mkRph], [GR_Tc_cps], [GR_Th_cps], [GR_U_cps], [H_nTl], [I_ab_mA], [I_SO_mA], [IC_mSipm], [IP_04_pct], [IP_10_pct], [IP_16_pct], [IP_2_pct], [IP_pct], [MAPO], [Mask], [MS_10ppm_u_SI]
, [MS_cor_mSi], [MS_spline_10ppm_u_SI], [NP_mV], [R_Om], [Spd_mph], [SPV_mV], [T_barrel_C_ddeg], [T_res_C_ddeg], [T_water_C_ddeg], [Time_s], [U0], [Volatge_cV], [Z_nTl] 
FROM (SELECT 
[HOLEID]
,[PROJECTCODE]
,[DEPTHSTEP]
,[RUN]
,[PRIORITY]
,[DEPTH]
,[AR_Om_m]
,[Ax_ddeg]
,[Az_ddeg]
,[Az_mag_ddeg]
,[Az_spline_ddeg]
,[Dip_ddeg]
,[Dip_spline_ddeg]
,[DISTC]
,[GR_K_cps]
,[GR_mkRph]
,[GR_Tc_cps]
,[GR_Th_cps]
,[GR_U_cps]
,[H_nTl]
,[I_ab_mA]
,[I_SO_mA]
,[IC_mSipm]
,[IP_04_pct]
,[IP_10_pct]
,[IP_16_pct]
,[IP_2_pct]
,[IP_pct]
,[MAPO]
,[Mask]
,[MS_10ppm_u_SI]
,[MS_cor_mSi]
,[MS_spline_10ppm_u_SI]
,[NP_mV]
,[R_Om]
,[Spd_mph]
,[SPV_mV]
,[T_barrel_C_ddeg]
,[T_res_C_ddeg]
,[T_water_C_ddeg]
,[Time_s]
,[U0]
,[Volatge_cV]
,[Z_nTl]
FROM [GEOPHYSHEADER] a 
INNER JOIN 
  (SELECT PROJECTCODE PROJECTCODE_WSF, HOLEID HOLEID_WSF, HOLETYPE FROM (SELECT * FROM [HOLELOCATION]) AS [CollarWSF]) b
ON a.HOLEID = b.HOLEID_WSF 
AND a.PROJECTCODE = b.PROJECTCODE_WSF 
AND b.HOLETYPE = 'DRILLHOLE' 
INNER JOIN 
  (SELECT GEOPHYSGID 
         ,DEPTH 
         ,min(CASE when NAME = 'AR_Om_m' then VALUE ELSE NULL END) as [AR_Om_m]
         ,min(CASE when NAME = 'Ax_ddeg' then VALUE ELSE NULL END) as [Ax_ddeg]
         ,min(CASE when NAME = 'Az_ddeg' then VALUE ELSE NULL END) as [Az_ddeg]
         ,min(CASE when NAME = 'Az_mag_ddeg' then VALUE ELSE NULL END) as [Az_mag_ddeg]
         ,min(CASE when NAME = 'Az_spline_ddeg' then VALUE ELSE NULL END) as [Az_spline_ddeg]
         ,min(CASE when NAME = 'Dip_ddeg' then VALUE ELSE NULL END) as [Dip_ddeg]
         ,min(CASE when NAME = 'Dip_spline_ddeg' then VALUE ELSE NULL END) as [Dip_spline_ddeg]
         ,min(CASE when NAME = 'DISTC' then VALUE ELSE NULL END) as [DISTC]
         ,min(CASE when NAME = 'GR_K_cps' then VALUE ELSE NULL END) as [GR_K_cps]
         ,min(CASE when NAME = 'GR_mkRph' then VALUE ELSE NULL END) as [GR_mkRph]
         ,min(CASE when NAME = 'GR_Tc_cps' then VALUE ELSE NULL END) as [GR_Tc_cps]
         ,min(CASE when NAME = 'GR_Th_cps' then VALUE ELSE NULL END) as [GR_Th_cps]
         ,min(CASE when NAME = 'GR_U_cps' then VALUE ELSE NULL END) as [GR_U_cps]
         ,min(CASE when NAME = 'H_nTl' then VALUE ELSE NULL END) as [H_nTl]
         ,min(CASE when NAME = 'I_ab_mA' then VALUE ELSE NULL END) as [I_ab_mA]
         ,min(CASE when NAME = 'I_SO_mA' then VALUE ELSE NULL END) as [I_SO_mA]
         ,min(CASE when NAME = 'IC_mSipm' then VALUE ELSE NULL END) as [IC_mSipm]
         ,min(CASE when NAME = 'IP_04_pct' then VALUE ELSE NULL END) as [IP_04_pct]
         ,min(CASE when NAME = 'IP_10_pct' then VALUE ELSE NULL END) as [IP_10_pct]
         ,min(CASE when NAME = 'IP_16_pct' then VALUE ELSE NULL END) as [IP_16_pct]
         ,min(CASE when NAME = 'IP_2_pct' then VALUE ELSE NULL END) as [IP_2_pct]
         ,min(CASE when NAME = 'IP_pct' then VALUE ELSE NULL END) as [IP_pct]
         ,min(CASE when NAME = 'MAPO' then VALUE ELSE NULL END) as [MAPO]
         ,min(CASE when NAME = 'Mask' then VALUE ELSE NULL END) as [Mask]
         ,min(CASE when NAME = 'MS_10ppm_u_SI' then VALUE ELSE NULL END) as [MS_10ppm_u_SI]
         ,min(CASE when NAME = 'MS_cor_mSi' then VALUE ELSE NULL END) as [MS_cor_mSi]
         ,min(CASE when NAME = 'MS_spline_10ppm_u_SI' then VALUE ELSE NULL END) as [MS_spline_10ppm_u_SI]
         ,min(CASE when NAME = 'NP_mV' then VALUE ELSE NULL END) as [NP_mV]
         ,min(CASE when NAME = 'R_Om' then VALUE ELSE NULL END) as [R_Om]
         ,min(CASE when NAME = 'Spd_mph' then VALUE ELSE NULL END) as [Spd_mph]
         ,min(CASE when NAME = 'SPV_mV' then VALUE ELSE NULL END) as [SPV_mV]
         ,min(CASE when NAME = 'T_barrel_C_ddeg' then VALUE ELSE NULL END) as [T_barrel_C_ddeg]
         ,min(CASE when NAME = 'T_res_C_ddeg' then VALUE ELSE NULL END) as [T_res_C_ddeg]
         ,min(CASE when NAME = 'T_water_C_ddeg' then VALUE ELSE NULL END) as [T_water_C_ddeg]
         ,min(CASE when NAME = 'Time_s' then VALUE ELSE NULL END) as [Time_s]
         ,min(CASE when NAME = 'U0' then VALUE ELSE NULL END) as [U0]
         ,min(CASE when NAME = 'Volatge_cV' then VALUE ELSE NULL END) as [Volatge_cV]
         ,min(CASE when NAME = 'Z_nTl' then VALUE ELSE NULL END) as [Z_nTl]
   FROM 
     (SELECT GEOPHYSGID,DEPTH,NAME,VALUE FROM GEOPHYSDETAILS WHERE PROPERTYID=0) z
      WHERE NAME IN
        (' '
                 ,'AR_Om_m' 
                 ,'Ax_ddeg' 
                 ,'Az_ddeg' 
                 ,'Az_mag_ddeg' 
                 ,'Az_spline_ddeg' 
                 ,'Dip_ddeg' 
                 ,'Dip_spline_ddeg' 
                 ,'DISTC' 
                 ,'GR_K_cps' 
                 ,'GR_mkRph' 
                 ,'GR_Tc_cps' 
                 ,'GR_Th_cps' 
                 ,'GR_U_cps' 
                 ,'H_nTl' 
                 ,'I_ab_mA' 
                 ,'I_SO_mA' 
                 ,'IC_mSipm' 
                 ,'IP_04_pct' 
                 ,'IP_10_pct' 
                 ,'IP_16_pct' 
                 ,'IP_2_pct' 
                 ,'IP_pct' 
                 ,'MAPO' 
                 ,'Mask' 
                 ,'MS_10ppm_u_SI' 
                 ,'MS_cor_mSi' 
                 ,'MS_spline_10ppm_u_SI' 
                 ,'NP_mV' 
                 ,'R_Om' 
                 ,'Spd_mph' 
                 ,'SPV_mV' 
                 ,'T_barrel_C_ddeg' 
                 ,'T_res_C_ddeg' 
                 ,'T_water_C_ddeg' 
                 ,'Time_s' 
                 ,'U0' 
                 ,'Volatge_cV' 
                 ,'Z_nTl' 
        ) 
      GROUP BY GEOPHYSGID,DEPTH) c 
ON a.GEOPHYSGID = c.GEOPHYSGID) [TMPVIEW11] WHERE ([TMPVIEW11].[AR_Om_m] IS NOT NULL OR [TMPVIEW11].[Ax_ddeg] IS NOT NULL OR [TMPVIEW11].[Az_ddeg] IS NOT NULL OR [TMPVIEW11].[Az_mag_ddeg] IS NOT NULL 
OR [TMPVIEW11].[Az_spline_ddeg] IS NOT NULL OR [TMPVIEW11].[Dip_ddeg] IS NOT NULL OR [TMPVIEW11].[Dip_spline_ddeg] IS NOT NULL OR [TMPVIEW11].[DISTC] IS NOT NULL OR [TMPVIEW11].[GR_K_cps] IS NOT NULL OR [TMPVIEW11].[GR_mkRph] IS NOT NULL 
OR [TMPVIEW11].[GR_Tc_cps] IS NOT NULL OR [TMPVIEW11].[GR_Th_cps] IS NOT NULL OR [TMPVIEW11].[GR_U_cps] IS NOT NULL OR [TMPVIEW11].[H_nTl] IS NOT NULL OR [TMPVIEW11].[I_ab_mA] IS NOT NULL OR [TMPVIEW11].[I_SO_mA] IS NOT NULL
 OR [TMPVIEW11].[IC_mSipm] IS NOT NULL OR [TMPVIEW11].[IP_04_pct] IS NOT NULL OR [TMPVIEW11].[IP_10_pct] IS NOT NULL OR [TMPVIEW11].[IP_16_pct] IS NOT NULL OR [TMPVIEW11].[IP_2_pct] IS NOT NULL OR [TMPVIEW11].[IP_pct] IS NOT NULL 
 OR [TMPVIEW11].[MAPO] IS NOT NULL OR [TMPVIEW11].[Mask] IS NOT NULL OR [TMPVIEW11].[MS_10ppm_u_SI] IS NOT NULL OR [TMPVIEW11].[MS_cor_mSi] IS NOT NULL OR [TMPVIEW11].[MS_spline_10ppm_u_SI] IS NOT NULL OR [TMPVIEW11].[NP_mV] IS NOT NULL 
 OR [TMPVIEW11].[R_Om] IS NOT NULL OR [TMPVIEW11].[Spd_mph] IS NOT NULL OR [TMPVIEW11].[SPV_mV] IS NOT NULL OR [TMPVIEW11].[T_barrel_C_ddeg] IS NOT NULL OR [TMPVIEW11].[T_res_C_ddeg] IS NOT NULL OR [TMPVIEW11].[T_water_C_ddeg] IS NOT NULL
  OR [TMPVIEW11].[Time_s] IS NOT NULL OR [TMPVIEW11].[U0] IS NOT NULL OR [TMPVIEW11].[Volatge_cV] IS NOT NULL OR [TMPVIEW11].[Z_nTl] IS NOT NULL) ) AS [ACQCONVERT] ) AS [TMPVIEW11]) [TMPSQLSHEETVIEW])gdt






Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645281
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы просто получите MIN([Поле с да/нет]) OVER (PARTITION BY [Скважина])) . Если есть хотя бы одно "да" - то и получите "да", иначе получите "нет". Ну или там MAX(CASE [Поле с да/нет] WHEN "да" THEN 1 ELSE 0 END) OVER (PARTITION BY [Скважина])) . От него и пляшите.
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645304
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо большое за идею, сейчас попробую
Akina,
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645353
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, блин, никак не выходит, еще больше дублировать стало...
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645371
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444еще больше дублировать сталоДа быть не может! как может увеличиться количество записей???
А идея вполне себе работает, см. http://www.sqlfiddle.com/#!18/a74f3/1
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645788
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444Akina, блин, никак не выходит, еще больше дублировать стало...У вас ошибка в коде.
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645863
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,
не могли бы вы указать на ошибку, пожалуйста. Не могу ее найти
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39645864
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ого, какой клевый сайт. Даже не знала что так можно. Спасибо! Буду свои скрипты тестить
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39646293
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444alexeyvg,
не могли бы вы указать на ошибку, пожалуйста. Не могу ее найтиВы бы код свой показали, как можно найти ошибку в запросе, не видя запроса???
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39646450
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, http://www.sqlfiddle.com очень интересная штука для определенных вещей.
Спасибо .
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39646451
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444А мне надо, чтобы "если хоть где-то по скважине есть "да", то он на всю скважину ставил "да" и глубины меня не интересуют.
Ну так делайте промежуточную таблицу "Скважина", "да/нет"
И потом обновите основную таблицу данными из неё.
...
Рейтинг: 0 / 0
Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!
    #39646456
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, собственно говоря примерно это же было предложено и ранее.
Другое дело, что проблема "дублирования" это не вопрос да/нет, а проблема группировки
после которой надо уже реализовывать агрегатные функции.
Или "дублирование у вас, это не "наличие нескольких строк по одному ID",
а "наличие разных признаков у строк с одним ID"?

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


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