Как сохранить несколько столбцов в 1 столбце как значение в sql - PullRequest
0 голосов
/ 23 апреля 2019

Как я могу получить все столбцы из подзапроса и сохранить его в 1 столбце?Мне нужно, чтобы он был в 1 столбце для использования в качестве ряда в диаграмме.

Вот мой код:

Select A,B,C,D,E,F as newcol from 
(SELECT 
COUNT(NULLIF(A,'')) as A,
COUNT(NULLIF(B,'')) as B,
COUNT(NULLIF(C,'')) as C,
COUNT(NULLIF(D,'')) as D,
COUNT(NULLIF(E,'')) as E,
COUNT(NULLIF(F,'')) as F
FROM MYTABLE)
as T

Так как результат подзапроса находится в форме 1 строки.Мне понадобились A, B, C, D, E, F в качестве значений столбцов, которые будут использоваться в качестве значений ряда на моем графике.Я хотел показать количество столбцов (ABCDEF) в графической форме (вместо 1 строки с 6 столбцами я хочу получить 1 столбец с 6 строками)

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Из этого:

Select A,B,C,D,E,F as newcol from

Полагаю, вы хотите, чтобы все столбцы были объединены в 1 столбец, например:

Select concat(A, ',', B, ',', C, ',', D, ',', E, ',', F) as newcol from

Если вам нужен только 1 столбец, в котором каждое значение равно 1 строке, то у вас уже есть значения в операторе select, и вы можете объединить их с UNION ALL:

SELECT COUNT(NULLIF(A,'')) as newcol FROM MYTABLE
UNION ALL
SELECT COUNT(NULLIF(B,'')) FROM MYTABLE
UNION ALL
SELECT COUNT(NULLIF(C,'')) FROM MYTABLE
UNION ALL
SELECT COUNT(NULLIF(D,'')) FROM MYTABLE
UNION ALL
SELECT COUNT(NULLIF(E,'')) FROM MYTABLE
UNION ALL
SELECT COUNT(NULLIF(F,'')) FROM MYTABLE
0 голосов
/ 23 апреля 2019

Если вы просто хотите получить сводные данные, а MYTABLE действительно имеет только одну строку, простейший способ выглядит так:

SELECT V.YourColum
FROM MYTABLE T
     CROSS APPLY (VALUES(T.A),
                        (T.B),
                        (T.C),
                        (T.D),
                        (T.E),
                        (T.F)) V(YourColumn);

Этот предполагает всестолбцы имеют одинаковый тип данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...