2012-04-16 3 views
-1

У меня есть таблица с именем статьяПолучения Четких данных из каждого столбца

Article_type Article_Shade Article_tool 
A    Red   FF 
A    Orange   KK 
B    Red   FF 

Я хочу, чтобы получить различные значения каждого столбца, используя один SQL-запрос.

Я пробовал много вариантов, пожалуйста, дайте мне знать, если это возможно.

Ожидаемый вывод должен быть:

  • A B для Article_type
  • Red Orange для Article_Shade
  • FF KK для Article_Tool
+2

Каков ваш ожидаемый результат? – Lamak

+2

То, что вы ожидаете, невозможно комбинировать в одном наборе результатов. Вы можете выполнить три запроса: SELECT DISTINCT Article_type FROM ...; SELECT DISTINCT Article_Shade FROM ..., SELECT DISTINCT Article_tool FROM ...; –

+2

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

ответ

0

Это было сделано на Oracle, не уверен, что DB вас есть используя, но, надеюсь, это g у вас есть идея.

CREATE TABLE article (article_type VARCHAR2(100), article_shade VARCHAR2(50), article_tool VARCHAR2(75)); 


INSERT INTO article VALUES ('A','Red','FF'); 
INSERT INTO article VALUES ('A','Orange','KK'); 
INSERT INTO article VALUES ('B','Red','FF'); 

COMMIT; 

SELECT column_name 
    , val 
FROM (
    SELECT DISTINCT 'article_type' column_name 
        , Article_type val 
       FROM article 
    UNION ALL 
    SELECT DISTINCT 'article_shade' column_name 
        , Article_Shade val 
       FROM article 
    UNION ALL 
    SELECT DISTINCT 'article_tool' column_name 
        , Article_tool val 
       FROM article 
) a 

Выход:

COLUMN_NAME  VAL 
1 article_type B 
2 article_type A 
3 article_shade Orange 
4 article_shade Red 
5 article_tool FF 
6 article_tool KK 

Примечание: Если вы пытаетесь получить этот результат обратно с 3-мя отдельными столбцами (например, один столбец для article_type, один для article_shade, и один для article_tool) , что является бессмысленным, поскольку каждый столбец может иметь разные количества различных значений.

+0

Но в этом .. обязательно, чтобы все столбцы имели одинаковый тип данных. Я прав?? –

+0

@SAM - Нет, длина может быть разной, см. Мое редактирование, я скорректировал длины столбцов VARCHAR2, и запрос все еще работает отлично. – dcp

+0

@SAM. Кроме того, для различий типов данных (например, если один столбец является числовым, а один - символьным), вы всегда можете использовать трансляции. – dcp

0

Я предполагаю, что это близко к ожидаемому выходу:

Aricle_type Article_Shade Article_tool 
A    Orange   FF 
B    Red   KK 

Хотя можно создать запрос, который будет делать это, казалось бы, бессмысленные. Чтобы сортировать каждый столбец отдельных значений отдельно и отображать их вместе, мы покажем нам записи, которые могут не существовать. Вы произвольно комбинируете атрибуты, которые представляют собой сущность, которая на самом деле не находится в таблице. В этом случае есть веская причина, по которой вы не смогли найти SQL-функцию, которая сделает это. Другие комментаторы также поднимают хорошие соображения о том, почему это невозможно, например, типы данных (вы, вероятно, выставляли все как строку) и, возможно, отличались значения значений, приводящие к значениям NULL (что будет иметь такое же значение, как и любая другая произвольно не-нулевая строка в этом случае).

+0

@SAM, пожалуйста, дайте мне знать, если мой пример вывода не тот, который вы намереваетесь, и я могу удалить этот ответ. –

+0

Да, я намерен использовать тот же вывод –

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