如果我的表格有这样的结构:
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执行此操作?
答案 0 :(得分:1)
您可能必须使用枢轴逻辑。下面是一个示例,其中一个DataTable被旋转以将行值转换为列。
答案 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