-1

我有一个名为 article 的表

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
4

2 回答 2

0

我假设这接近您的预期输出:

Aricle_type    Article_Shade  Article_tool
A              Orange         FF
B              Red            KK

虽然可以创建一个查询来执行此操作,但这似乎是荒谬的。单独对不同值的每一列进行排序并将它们一起显示将向我们显示可能不存在的记录。您将任意组合表示不在表中的实体的属性。在这种情况下,您无法找到可以执行此操作的 SQL 函数是有充分理由的。其他评论者也提出了为什么这是不可能的好点,例如数据类型(您可能会将所有内容都转换为字符串),以及可能导致空值的不同值计数(这与在这种情况下,任何其他任意非空行)。

于 2012-04-16T15:51:20.230 回答
0

这是在 Oracle 上完成的,不确定您使用的是什么数据库,但希望这能给您一个想法。

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)来获取此结果,这是没有意义的,因为每一列可能有不同数量的不同值。

于 2012-04-16T15:27:32.343 回答