-1

articleという名前のテーブルがあります

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

単一のSQLクエリを使用して各列の個別の値を取得したいと思います。

私はたくさんのオプションを試しましたが、可能であれば教えてください。

期待されるOutPutは次のようになります。

  • A BにとってArticle_type
  • Red OrangeにとってArticle_Shade
  • FF KKにとってArticle_Tool
4

2 に答える 2

0

これはOracleで行われ、使用しているDBがわかりませんが、うまくいけば、これでアイデアが得られます。

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用に1列、article_shade用に1列、article_tool用に1列)で取得しようとしている場合、各列が異なる量の個別の値を持つ可能性があるため、これは無意味です。

于 2012-04-16T15:27:32.343 に答える
0

私はこれがあなたの期待される出力に近いと仮定しています:

Aricle_type    Article_Shade  Article_tool
A              Orange         FF
B              Red            KK

これを行うクエリを作成することは可能ですが、それは一見無意味に見えます。個別の値の各列を個別に並べ替えて一緒に表示すると、存在しない可能性のあるレコードが表示されます。実際にはテーブルにないエンティティを表す属性を任意に組み合わせることになります。この場合、これを行うSQL関数を見つけることができなかったのには十分な理由があります。他のコメンテーターも、データ型(おそらくすべてを文字列としてキャストする)や、nullにつながる値の数が異なる(これは同じくらい意味があります)など、これが不可能な理由についての良い点を示していますこの場合、他の任意のnull以外の行)。

于 2012-04-16T15:51:20.230 に答える