Как получить данные конкретного пользователя в одну строку [дубликаты]

1

Если у меня есть таблица со структурой вроде этого:

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?

Теги:
database
linq
informix

5 ответов

1
Лучший ответ

Возможно, вам придется использовать сводную логику. Вот пример, где DataTable поворачивается для преобразования значений строк в столбцы.

Динамический PIVOT с использованием С# Linq

1

выберите * из TABLE_NAME pivot (сумма (значение) для типа в (Light, normal)) AS PVTTable, где regnum = 55

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)
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
-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 с типом света

Ещё вопросы

Сообщество Overcoder
Наверх
Меню