Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 2005 获取格式化输出_Sql Server 2005 - Fatal编程技术网

Sql server 2005 获取格式化输出

Sql server 2005 获取格式化输出,sql-server-2005,Sql Server 2005,具有如下所示的数据 ItemCode SalesPrice PricingLevel ITEM-000001 451.000000 Barons ITEM-000001 432.000000 Guild 是否有办法获得以下输出: ItemCode Barons Guild ITEM-000001 451 432 试试这个(注意:因为我不知道您的表名,所以我称之为“Items”): 对于不显示十进制零,请使用以下命令: SELECT DISTIN

具有如下所示的数据

ItemCode    SalesPrice  PricingLevel
ITEM-000001 451.000000  Barons
ITEM-000001 432.000000  Guild
是否有办法获得以下输出:

ItemCode      Barons     Guild
ITEM-000001   451        432
试试这个(注意:因为我不知道您的表名,所以我称之为“Items”):

对于不显示十进制零,请使用以下命令:

SELECT DISTINCT I1.ItemCode, 
       (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I2 WHERE I2.ItemCode = I1.ItemCode AND I2.PricingLevel = 'Barons') Barons,
       (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I3 WHERE I3.ItemCode = I1.ItemCode AND I3.PricingLevel = 'Guild') Guild
FROM Items I1

你们有多少种不同的等级?我可以看到PricingLevel(男爵,公会)的两个值。该列表中是否还有更多项?Hi Tufo,它运行良好,但从性能角度来看,如果我有大量数据,它是否运行良好?如果您只有这些列,那么它将运行良好,整个表将有1个选择项,每个项有2个选择项,没有问题。但是如果您有更多的列,那么性能可能会有问题。您有多少PricingLevel寄存器?在该表中,我有15列,但PricingLevel是固定的,但您有多少定价级别?提高性能的一个好方法是在该表中为“PricingLevel”列创建一个额外的索引,然后为该查询创建一个视图。是的,表中已经有索引我正在视图中使用该查询非常感谢,我使用您的查询是因为我觉得它比上面的更快,因为在您的查询中只有一个select&在上面的3个select中,我觉得使用您的解决方案更好。非常感谢你。
SELECT DISTINCT I1.ItemCode, 
       (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I2 WHERE I2.ItemCode = I1.ItemCode AND I2.PricingLevel = 'Barons') Barons,
       (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I3 WHERE I3.ItemCode = I1.ItemCode AND I3.PricingLevel = 'Guild') Guild
FROM Items I1
SELECT ItemCode, 
Sum(Case when PricingLevel = 'Barons' Then SalesPrice else 0 end) as Barons,
Sum(Case when PricingLevel = 'Guild' Then SalesPrice else 0 end) as Guild
FROM myTable
GROUP BY ItemCode