2015-06-11 7 views
0

Могу ли я получить помощь по этому вопросу, не уверен, как этого добиться.Значение в каждом столбце таблицы

У меня есть стол с 11 колоннами.

столбец 2 в столбец 10 состоит из определенного атрибута и атрибута_значения.

для например: Диаметр -> DVALUE

 Width-- > WVALUE 

Resultset должен состоять как результат 1 | Результат2 | Результат 3 ...

Результат 1, результат2 они равны столбцу attribute_value.

Мне нужно знать, если какие-либо данные в столбце значения атрибута недействительны, то конкретный атрибут должен выводиться в соответствующем столбце результата.

для например: -

SKU  ,Diameter ,DVALUE ,Width ,WVALUE ,Bolt 1 ,Bolt_1_VALUE ,Bolt 2 ,Bolt2_VALUE ,Nut Design ,Nut_Design_VALUE 
AR105 ,Diameter ,68  ,Width ,10  ,Bolt 1 ,114.3   ,Bolt 2 ,NULL   ,Nut Design ,Acorn 
AR105MB ,Diameter ,18  ,Width ,10  ,Bolt 1 ,114.3   ,Bolt 2 ,NULL   ,Nut Design ,Acorn 
M8861A ,Diameter ,22  ,Width ,8  ,Bolt 1 ,150.1   ,Bolt 2 ,NULL   ,Nut Design ,Acorn 
RAR105M8 ,Diameter ,18  ,Width ,8  ,Bolt 1 ,120.7   ,Bolt 2 ,NULL   ,Nut Design ,Biscuit 
ZM8865A ,Diameter ,18  ,Width ,8  ,Bolt 1 ,114.3   ,Bolt 2 ,NULL   ,Nut Design ,Acorn 

Ниже условие используется для проверки данных в значении атрибута

Соотношение диаметра не должно быть больше, чем 20

Соотношение ширины не должно быть больше, чем 10

Значение для болта не должно превышать 130

только значение Acorn является ПОЗВОЛЯЮТ в Nut Design

Результат

Result1 ,Result2, Result3, Result4, Result5 
Diameter,'',  '',   '',   '' 

'',  '',  '',   '',   '' 

'Diameter','',  'Bolt 1', '',   '' 

'',  '',  '',  '',   Nut Design 


DECLARE @TABLE TABLE 
(
SKU VARCHAR (50), 
Diameter VARCHAR (50), 
DVALUE VARCHAR (50), 
Width VARCHAR (50), 
WVALUE VARCHAR (50), 
Bolt1 VARCHAR (50), 
Bolt_1_VALUE VARCHAR (50), 
Bolt2 VARCHAR (50), 
Bolt2_VALUE VARCHAR (50), 
NutDesign VARCHAR (50), 
Nut_Design_VALUE VARCHAR (50) 
) 

INSERT @TABLE 

SELECT 'AR105' ,'Diameter' ,'68'  ,'Width' ,'10'  ,'Bolt 1' ,'114.3'   ,'Bolt 2' ,NULL   ,'Nut Design' ,'Acorn' UNION ALL 
SELECT 'AR105MB','Diameter' ,'18'  ,'Width' ,'10'  ,'Bolt 1' ,'114.3 '  , 'Bolt 2' ,NULL   ,'Nut Design' ,'Acorn' UNION ALL 
SELECT 'M8861A' ,'Diameter' ,'22'  ,'Width' ,'8'  ,'Bolt 1' ,'150.1'   ,'Bolt 2' ,NULL   ,'Nut Design' ,'Acorn' UNION ALL 
SELECT 'RAR105M8','Diameter' ,'18'  ,'Width' ,'8'  ,'Bolt 1' ,'120.7'   ,'Bolt 2' ,NULL   ,'Nut Design' ,'Biscuit' UNION ALL 
SELECT 'ZM8865A' ,'Diameter' ,'18'  ,'Width' ,'9'  ,'Bolt 1' ,'114.3'   ,'Bolt 2' ,NULL   ,'Nut Design' ,'Acorn' 

SELECT * FROM @TABLE 

для ширины мы должны проверить в других table2 и если значение присутствует в таблице 1, и нет в таблице 2, то оно должно быть на выходе ,

Declare @ table2 стол ( Ширина VARCHAR (50) )

вставка @ table2 выберите объединение '5' все выберите объединение '8' все

ответ

0

Может быть, я недоразумение это, но ...

Select * 
    from table 
where diameter > 20 
    or width > 10 
    or bolt > 130 

Edit: Так на основе комментарий, я понимаю, что йо u только хочу видеть значения, которые нарушают эти пределы и пробелы для всех других столбцов. В этом случае что-то вроде следующего будет делать трюк

SELECT SKU, 
     Case when dvalue > 20 then 'Diameter' else '' end, 
     Case when dvalue > 20 then DValue else '' end, 
     Case when wvalue > 10 then 'Width' else '' end, 
     Case when wvalue > 10 then WValue else '' end, 
     Case when bolt_1_value > 130.0 then 'bolt_1_value' else '' end, 
     Case when bolt_1_value > 130.0 then bolt_1_value else '' end, 
     Case nut_design_Value when 'Acorn' then '' else 'nut_design_Value' end , 
     Case nut_design_Value when 'Acorn' then '' else nut_design_Value end 
    FROM @TABLE 
WHERE dvalue > 20 
    OR wvalue > 10 
    OR bolt_1_value > 130.0 
    or nut_design_Value <> 'Acorn' 

Edit 2: Так что, если я правильно понимаю, что вы хотите включать строки, где ширина больше, чем 10 или, где значение в wvalue поле не существует во второй таблице? Если у меня есть это правильно, то это должно сделать это для вас ....

SELECT SKU, 
     Case when dvalue > 20 then 'Diameter' else '' end, 
     Case when dvalue > 20 then DValue else '' end, 
     Case when wvalue > 10 or t2.Width is null then 'Width' else '' end, 
     Case when wvalue > 10 or t2.Width is null then WValue else '' end, 
     Case when bolt_1_value > 130.0 then 'bolt_1_value' else '' end, 
     Case when bolt_1_value > 130.0 then bolt_1_value else '' end, 
     Case nut_design_Value when 'Acorn' then '' else 'nut_design_Value' end , 
     Case nut_design_Value when 'Acorn' then '' else nut_design_Value end 
    FROM @TABLE t1 
    LEFT JOIN @TABLE2 t2 on t1.wvalue = t2.width 
WHERE dvalue > 20 
    OR wvalue > 10 
    or t2.Width is null 
    OR bolt_1_value > 130.0 
    or nut_design_Value <> 'Acorn' 
+0

Не забывайте Если это конструкция гайки, то все, кроме Acorn значения также должно быть помечено – Ilessa

+0

Спасибо amcdermott, но моя основная проблема заключается в выходном формате. если какое-либо значение атрибута не соответствует критериям, тогда его соответствующий атрибут должен отображаться на выходе. – akhrot

+0

Я получаю ошибку: выражение небулевого типа, указанное в контексте, где ожидается условие, рядом с «когда». – akhrot

Смежные вопросы