如何在一行中获取特定用户的数据

时间:2014-08-26 09:38:32

标签: c# sql database linq informix

如果我的表格有这样的结构:

serial    regnum    value    type

  1         55      100     normal

  2         55      66      Light

  3         77      70      normal

  4         30      40      Light

现在,如果我想在一条记录中获取有关regnum = 55的数据而不是两条具有以下结构的数据:

regnum  normal   light

 55       100      66

如何通过SQL查询或通过LINQ执行此操作?

5 个答案:

答案 0 :(得分:1)

您可能必须使用枢轴逻辑。下面是一个示例,其中一个DataTable被旋转以将行值转换为列。

Dynamic PIVOT using C# Linq

答案 1 :(得分:1)

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.type) 
            FROM table_name c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT regnum, ' + @cols + ' from 
            (
                select regnum
                    , value
                    , type
                from table_name
           ) x
            pivot 
            (
                 sum(value)
                for type in (' + @cols + ')
            ) p '


execute(@query)

答案 2 :(得分:1)

从TABLE_NAME枢轴中选择*(类型为sum(value)(Light,normal)) 作为PVTTable 其中regnum = 55

答案 3 :(得分:0)

SELECT regnum, SUM(ISNULL(Light,0)) AS Light, SUM(ISNULL(normal,0)) AS Normal     
FROM 
    temp_sc  
  PIVOT (sum(value) FOR Type IN (Light,normal)) AS PVTTable
WHERE regnum=55
GROUP BY regnum

答案 4 :(得分:-1)

mysql query = "SELECT * FROM TABLE_NAME WHERE regnum = 55"
上面的

将获得regnum = 55的所有数据。

更具体:

mysql query = "SELECT * FROM TABLE_NAME WHERE regnum =55 AND type="Light" "

使用类型灯

获得regnum 55