Если у меня есть таблица со структурой вроде этого:
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?
Возможно, вам придется использовать сводную логику. Вот пример, где DataTable поворачивается для преобразования значений строк в столбцы.
выберите * из TABLE_NAME pivot (сумма (значение) для типа в (Light, normal)) AS PVTTable, где regnum = 55
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)
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
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 с типом света