2016-10-03 1 views
2

У меня есть таблица в форматенужны количество строк для каждого типа значения

SID LinkName   
A1 Link1   
A1 Link2   
A2 Link1   
A2 Link2   
A2 Link3   
A3 Link2 
A1 Link1 
A2 Link2 

Мне нужно, чтобы отобразить результаты для подсчета каждого звена типа в формате ниже

Link1 Link2 Link3     
3  4  1 

Pls советует.

EDIT: Также, если мне нужно отобразить результаты для отдельного счета каждого типа ссылок в нижнем формате. Как A1 -> Link1 появляется дважды, но должен учитываться только один раз

Link1 Link2 Link3     
2  3  1 
+1

Что ожидаемый результат, если link4 внезапно появляется в таблице? – jarlh

+1

Зачем нужен этот формат? что произошло, если вы добавите Link4 и Link5? это не динамический, просто сделайте простой подсчет и обработайте отображение LinkName, total. Я не понимаю upvote, никакого кода не предоставил, вы ничего не пробовали, конечно, повторяющийся вопрос ... – amdev

+0

В основном это необходимо для статических данных. –

ответ

0

Как правило, вы не хотите поместить их в столбцы, а в строках, как:

select LinkName, count(LinkName) as LinkCount 
from table group by LinkName 

... который дал бы:

LinkName | LinkCount 
Link1 | 2 
Link2 | 3 
Link3 | 1 

Таким образом, если новые типы ссылок не отображаются, не большой. Будет ли это работать, или они должны быть в колонках? Если это так, вы, вероятно, смотрите либо на один счетчик (*), либо на два подзапроса или на достаточно сложное самосоединение или какой-либо метод. Нравится:

select count(*) as Link1, (select count(*) from table where LinkName='Link2') as Link2... 
from table where LinkName='Link1' 

... или что-то в этом роде.

+0

В первом SQL-запросе, если у меня есть одна и та же строка два раза или больше (т. Е. Избыточные данные), как показать количество уникальных строк для имени ссылки –

+0

. Предполагаю, что вы только заботитесь о LinkName и предполагаете, что вы 'иначе просто подсчет строк. Если вам не нужно и нужно подсчитывать совершенно уникальные строки (глядя на все столбцы, чтобы понять уникальность), тогда вы можете выбрать против псевдоизменяемого (выберите * из группы таблицы по col1, col2, ... colN), где вы поместите все столбцы в группе.Беспокойный, но должен работать (хотя он и спрашивает, почему у вас будут дублировать строки в таблице вообще). Есть почти наверняка другие ответы там (например, некоторые сложные DISTINCT thingy или некоторые нестандартные SQL) ... –

+0

Таблица имеет повторяющиеся строки, поскольку каждый раз кто-то щелкает ссылку, создается новая запись. Поэтому, предполагая, что люди несколько раз кликируют несколько ссылок, я хочу знать нет. раз каждая ссылка уникально нажата. Надеюсь, это очистит требование. –

1
select sum(case when LinkName = 'Link1' then 1 end) as link1, 
     sum(case when LinkName = 'Link2' then 1 end) as link2, 
     sum(case when LinkName = 'Link3' then 1 end) as link3 
from tablename 
+0

Спасибо за это. Это сработало. В дополнение к этому, если имеются избыточные данные (избыточные или одинаковые строки в таблице) Как получить уникальный счет для каждой ссылки? –

+0

Обновите свой вопрос, включая данные таблицы образцов и ожидаемый результат. – jarlh

+0

добавлен. Нужно уникальное количество для каждой ссылки. Посоветуйте, пожалуйста. И я согласен с динамическим результатом. Запрос, предоставленный BJ Black, также является хорошим вариантом для продолжения. –

2

В MySQL, вы можете просто сделать:

select sum(linkname = 'link1') as link1, 
     sum(linkname = 'link2') as link2, 
     sum(linkname = 'link3') as link3 
from t; 

EDIT:

Если вы хотите посчитать прочие sid:

select count(distinct case when linkname = 'link1' then sid end) as link1, 
     count(distinct case when linkname = 'link2' then sid end) as link2, 
     count(distinct case when linkname = 'link3' then sid end) as link3 
from t; 
0
select Link1,Link2,Link3 
from 
(
select Id,Rtrim(Ltrim(Name)) as Name 
from Table_1 
) src 
pivot 
(
    count(Id) 
for Name in (Link1,Link2,Link3) 
) piv; 

, которые дают как:

Link1 Link2 Link3 
4  3  1 
+0

@PankajGupta Использование pivot u может получить результат в столбцах – Darshak