Member 12085957 Ответов: 1

Выберите ненулевые несколько столбцов из инструкции select


Ниже приведена таблица SQL ResultSet

Dates         Col1       Col2       Col3

17-2-2017      0          1          0  
18-2-2017      1          1          0
19-2-2017      1          1          0



Я получил такой результат ниже

Dates        col1     col2

17-2-2017     0         1
18-2-2017     1         1
19-2-2017     1         1


Что я уже пробовал:

SELECT p.*
FROM Data p 
INNER JOIN (SELECT A.Date 
            FROM (SELECT p.Date,p.Col1,p.Col2 
 ) As A
            GROUP BY A.Date 
            HAVING COUNT(*) > 1

OriginalGriff

И что же?
Что вы хотели получить?

Tomas Takac

Итак, вы хотите исключить Col3, потому что там все нули? Почему? Я спрашиваю, что SQL хорошо фильтрует данные по строкам, но не по столбцам. Я думаю, что это можно сделать - просто убедитесь, что это стоит усилий. Мне это кажется очень странным требованием.

Bryian Tan

Можете ли вы предоставить некоторые примеры выходных данных, которые вы ожидали бы увидеть?

Karthik_Mahalingam

он просто хотел удалить col3, так как в нем есть все нули

Member 12085957

Да

Member 12085957

Я хочу исключить col3 из результирующего набора, потому что он имеет все нули

Karthik_Mahalingam

сколько столбцов

Member 12085957

Выше результирующий набор имеет 3 столбца я хочу выбрать столбцы которые не имеют нулей

Karthik_Mahalingam

ладно

Member 12085957

я могу выбрать col1, col2 из таблицы, но мне нужен динамический sql для фильтрации столбцов

Karthik_Mahalingam

проверьте решение

Karthik_Mahalingam

для динамического вы должны использовать курсор. однако проверьте решение

Member 12085957

ОК thanq Картик я буду проверять я буду обновлять вас

Karthik_Mahalingam

конечно

Member 12085957

@Karthik можете ли вы посмотреть ссылку ниже
https://www.codeproject.com/Questions/1176398/Playing-audio-file-from-directory-in-ASP-NET

Karthik_Mahalingam

работает ли нижеприведенное решение?

Member 12085957

Да Катик спасибо за помощь

Karthik_Mahalingam

можете ли вы закрыть это, пометив его как ответ

1 Ответов

Рейтинг:
11

Karthik_Mahalingam

Это не идеальное решение, но оно работает

Создайте временную таблицу и скопируйте фактические данные в временную таблицу, проверьте, есть ли в столбце все нули, если да, то удалите столбец из временной таблицы

if exists (     select  * from tempdb.dbo.sysobjects o    where o.xtype in ('U')    and o.id = object_id(N'tempdb..#tbltemp'))
DROP TABLE #tbltemp; 
CREATE TABLE #tbltemp( Dates varchar(9),col1 int, col2 int, col3 int)
insert   into #tbltemp (dates,col1,col2,col3     )   select  dates,col1,col2,col3 from Table1 ;
 
 
 if not exists ( select * from #tbltemp where col3 <> 0 )
 ALTER TABLE #tbltemp DROP COLUMN col3
 if not exists ( select * from #tbltemp where col2 <> 0 )
 ALTER TABLE #tbltemp DROP COLUMN col2
 if not exists ( select * from #tbltemp where col1 <> 0 )
 ALTER TABLE #tbltemp DROP COLUMN col1

 

  select * from #tbltemp