Sql server 2008 让查询结果显示在不同的列中
我试图避免创建一个表来显示这些结果(如果可能的话)。我想做的是,从本质上看,我的查询结果是一个表,有一列用于fullitemlist,一列用于“已排序”,一列用于“尚未排序”。基本上,我试图从查询中返回这样的结果集: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 >
> 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