Sql 如何从多个列中检索不同的值

Sql 如何从多个列中检索不同的值,sql,sql-server-2005,Sql,Sql Server 2005,我有一个平面文本文件数据,我将其导入到SQL Server表中 它根据数据文件创建具有指定名称和多列的表 现在我需要一个查询,它将返回数据及其计数。e、 g 数据文件: BREAD,MILK BREAD,DIAPER,BEER,EGGS MILK,DIAPER,BEER,COKE BREAD,MILK,DIAPER,BEER BREAD,MILK,DIAPER,COKE BREAD,ICE,MANGO JUICE,BURGER 结果应该是 BREAD | 5 MILK | 4 DIAPER

我有一个平面文本文件数据,我将其导入到SQL Server表中

它根据数据文件创建具有指定名称和多列的表

现在我需要一个查询,它将返回数据及其计数。e、 g

数据文件:

BREAD,MILK
BREAD,DIAPER,BEER,EGGS
MILK,DIAPER,BEER,COKE
BREAD,MILK,DIAPER,BEER
BREAD,MILK,DIAPER,COKE 
BREAD,ICE,MANGO
JUICE,BURGER
结果应该是

BREAD | 5
MILK  | 4
DIAPER| 4

等等。

这是基于不完整信息的猜测:

select Item, count(*)
from Items
group by Item

在一个猜测的要求,因为将需要看到你的计划,但,也许像这样的东西

SELECT
    ItemValue,
    COUNT(*)
FROM
(
    SELECT
        Column1 ItemValue
    FROM
        DataTable
    UNION ALL
    SELECT
        Column2 ItemValue
    FROM
        DataTable
    UNION ALL
    SELECT
        Column3 ItemValue
    FROM
        DataTable
    UNION ALL
    SELECT
        Column4 ItemValue
    FROM
        DataTable
) UnionDataTable

您的表的架构是什么?您是否有效地创建了一行n列?这就是非规范化数据库的问题,一切都变得更加困难。@Otavio:我们不知道数据库是否非规范化。在导入过程中,数据可以通过多种方式进行转换。为什么啤酒、鸡蛋等不显示在输出中?您认为我可以使用游标或类似工具来实现这一点,因为我不知道不同数据文件的列数是多少?UnionDataTable是上一个SELECT的别名。