Sql server 数一数';X';然后在SQL中将值排列为行
我在SQL中有一个表,它有许多列,每行中每列的值都是“”或“X”。我需要为每一列计算这个“X”,这可以通过下面的代码来完成Sql server 数一数';X';然后在SQL中将值排列为行,sql-server,Sql Server,我在SQL中有一个表,它有许多列,每行中每列的值都是“”或“X”。我需要为每一列计算这个“X”,这可以通过下面的代码来完成 SELECT COUNT(GVI0) AS GVI0, COUNT(GVI1) AS GVI1, COUNT(GVI2) AS GVI2 FROM dbo.HullInspectionProgram WHERE (StructureEntry='1' AND Year='2016') 查询结果为 GVI0 NDT0 GVI1 NDT1 GVI2 NDT2 11 11
SELECT COUNT(GVI0) AS GVI0, COUNT(GVI1) AS GVI1, COUNT(GVI2) AS GVI2
FROM dbo.HullInspectionProgram
WHERE (StructureEntry='1' AND Year='2016')
查询结果为
GVI0 NDT0 GVI1 NDT1 GVI2 NDT2
11 11 2 4 11 11
但是,(据我所知)为了将此计数值绑定到具有多个系列名称“GVI”和“NDT”的ASP.net图表控件中,我需要将列设置为DataTable的行
我尝试像这样在SQL中使用UNPIVOT
SELECT GVI0Count
FROM (
SELECT COUNT(GVI0) AS GVI0, COUNT(GVI1) AS GVI1, COUNT(GVI2) AS GVI2
FROM dbo.HullInspectionProgram
WHERE (StructureEntry='1' AND Year='2016')
)
UNPIVOT (GVI0Count FOR ListOfColumns IN (GVI0)) AS unpivott
但代码似乎是错的
我如何做到这一点?我认为以下内容可能适合您。至少,作为一个开始
SELECT *
FROM (
SELECT COUNT(GVI0) AS GVI0, COUNT(GVI1) AS GVI1, COUNT(GVI2) AS GVI2
FROM dbo.HullInspectionProgram
WHERE (StructureEntry='1' AND Year='2016')
) P
UNPIVOT (GVI0Count FOR ListOfColumns IN (GVI0, GVI1, GVI2)) AS unpivott
为什么我需要在UNPIVOT之前加上“P”或“AS P”?这是因为我创建了一个新表,但实际上没有将其保存到数据库中?我认为它确实使用该别名创建了一个临时工作表,是的。这就是为什么我的sql查询出现错误。。。我想创建一个临时表需要一个名称才能使用它。。。