Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 让查询结果显示在不同的列中_Sql Server 2008_Pivot - Fatal编程技术网

Sql server 2008 让查询结果显示在不同的列中

Sql server 2008 让查询结果显示在不同的列中,sql-server-2008,pivot,Sql Server 2008,Pivot,我试图避免创建一个表来显示这些结果(如果可能的话)。我想做的是,从本质上看,我的查询结果是一个表,有一列用于fullitemlist,一列用于“已排序”,一列用于“尚未排序”。基本上,我试图从查询中返回这样的结果集: > Zip = 55555 > fullitemlist ----- Has Been Ordered ---- Has Not Been Ordered > Knife Set 1 0 >

我试图避免创建一个表来显示这些结果(如果可能的话)。我想做的是,从本质上看,我的查询结果是一个表,有一列用于fullitemlist,一列用于“已排序”,一列用于“尚未排序”。基本上,我试图从查询中返回这样的结果集:

> Zip = 55555
> fullitemlist ----- Has Been Ordered ---- Has Not Been Ordered
> Knife Set              1                      0
> Butcher Block          0                      1
> Dishwasher             0                      1
> Hair Dryer             1                      0
对于我的tbl_项目列表中的所有项目,依此类推。这是我尝试处理的3个CTE查询,但它在一个巨大的列表中返回所有内容,而不是我所要的:)

--您可以根据您的问题编写这样的查询,而不是
CTE、union all、SubQuery
这是最简单的方法

SELECT fullitemlist
    ,CASE 
        WHEN tp.hasbeenordered = 1
            AND tI.hasbeenordered = 1
            THEN 1
        ELSE 0
        END AS 'Has Been Ordered'
    ,CASE 
        WHEN tp.hasbeenordered = 0
            AND ti.tp.hasbeenordered = 0
            THEN 1
        ELSE 0
        END AS 'Has NEVER Been Ordered'
FROM tbl_ItemList ti
INNER JOIN tbl_purchasehistory tp ON ti.itemid = tp.ItemId
WHERE zip = @zip

你的期望产量是多少。
SELECT fullitemlist
    ,CASE 
        WHEN tp.hasbeenordered = 1
            AND tI.hasbeenordered = 1
            THEN 1
        ELSE 0
        END AS 'Has Been Ordered'
    ,CASE 
        WHEN tp.hasbeenordered = 0
            AND ti.tp.hasbeenordered = 0
            THEN 1
        ELSE 0
        END AS 'Has NEVER Been Ordered'
FROM tbl_ItemList ti
INNER JOIN tbl_purchasehistory tp ON ti.itemid = tp.ItemId
WHERE zip = @zip