Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL 2012 html表,具有非重复列值的xml路径_Sql_Sql Server_Sql Server 2012_For Xml Path_For Xml - Fatal编程技术网

SQL 2012 html表,具有非重复列值的xml路径

SQL 2012 html表,具有非重复列值的xml路径,sql,sql-server,sql-server-2012,for-xml-path,for-xml,Sql,Sql Server,Sql Server 2012,For Xml Path,For Xml,使用此表: declare @table table ( ID int not null IDENTITY(1,1), day date, hour int, val int ) insert into @table values ('2016-06-15', 8, 1), ('2016-06-15', 9, 1), ('2016-06-15', 10, 7), ('2016-06-16', 8, 3), ('2016-06-15', 9, 3),

使用此表:

  declare @table table 
  (
  ID int not null IDENTITY(1,1), 
  day date,
  hour int, 
  val int
  )

insert into @table
 values 
('2016-06-15', 8, 1),
('2016-06-15', 9, 1), 
('2016-06-15', 10, 7),
('2016-06-16', 8, 3), 
('2016-06-15', 9, 3), 
('2016-06-15', 10, 5)
这是某个查询的结果,该查询列出了每天和每小时的值。我正在使用我在某处找到的代码(我使用它,但我并不真正理解它)从@table生成html表

SELECT CAST((select 2 [@cellpadding]
      ,2 [@cellspacing]
      ,1 [@border]
      , 'background-color: rgb(226, 140, 5)' [@style]
        ,(select th
            from (select 'Day' th union all
            select 'Hour' th
               union all
                  select 'Val'
) d
          for xml path(''),type) tr 
        ,(select (select 'width:260px;vertical-align:top;background-color: white;' [@style], [Day]  for xml path('td'),type),
                (select 'width:260px;vertical-align:top;background-color: white;' [@style], [Hour]  for xml path('td'),type),
                 (select 'width:260px;vertical-align:top;background-color: white;' [@style], val for xml path('td'),type)
            from (
                  select t.day
                  , t.Hour
                  , t.val
                    FROM @table t
                ) data
           for xml path ('tr'),type)
 for xml path('table'), type) AS nvarchar(MAX))
这给了我一个如下的html表:

Day         Hour    Val

2016-06-15  8       1
2016-06-15  9       1
2016-06-15  10      7
2016-06-16  8       3
2016-06-16  9       3
2016-06-16  10      5
Day         Hour    Val

2016-06-15  8       1
            9       1
            10      7
2016-06-16  8       3
            9       3
           10       5
我想要的是这样一张桌子:

Day         Hour    Val

2016-06-15  8       1
2016-06-15  9       1
2016-06-15  10      7
2016-06-16  8       3
2016-06-16  9       3
2016-06-16  10      5
Day         Hour    Val

2016-06-15  8       1
            9       1
            10      7
2016-06-16  8       3
            9       3
           10       5
i、 e.不要在天内重复相同的值,只在新的一天显示天值

使用Row_Number()函数显示预期结果。试着这样,

DECLARE @table TABLE (
    ID INT NOT NULL IDENTITY(1, 1)
    ,day DATE
    ,hour INT
    ,val INT
    )

INSERT INTO @table
VALUES (
    '2016-06-15'
    ,8
    ,1
    )
    ,(
    '2016-06-15'
    ,9
    ,1
    )
    ,(
    '2016-06-15'
    ,10
    ,7
    )
    ,(
    '2016-06-16'
    ,8
    ,3
    )
    ,(
    '2016-06-16'
    ,9
    ,3
    )
    ,(
    '2016-06-16'
    ,10
    ,5
    )

SELECT CAST((
            SELECT 2 [@cellpadding]
                ,2 [@cellspacing]
                ,1 [@border]
                ,'background-color: rgb(226, 140, 5)' [@style]
                ,(
                    SELECT th
                    FROM (
                        SELECT 'Day' th

                        UNION ALL

                        SELECT 'Hour' th

                        UNION ALL

                        SELECT 'Val'
                        ) d
                    FOR XML path('')
                        ,type
                    ) tr
                ,(
                    SELECT (
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,[Day]
                            FOR XML path('td')
                                ,type
                            )
                        ,(
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,[Hour]
                            FOR XML path('td')
                                ,type
                            )
                        ,(
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,val
                            FOR XML path('td')
                                ,type
                            )
                    FROM (
                        SELECT CASE 
                                WHEN row_number() OVER (
                                        PARTITION BY day ORDER BY day
                                        ) = 1
                                    THEN t.day
                                ELSE NULL
                                END AS day
                            ,t.Hour
                            ,t.val
                        FROM @table t
                        ) data
                    FOR XML path('tr')
                        ,type
                    )
            FOR XML path('table')
                ,type
            ) AS NVARCHAR(MAX))
使用Row_Number()函数显示预期结果。试着这样,

DECLARE @table TABLE (
    ID INT NOT NULL IDENTITY(1, 1)
    ,day DATE
    ,hour INT
    ,val INT
    )

INSERT INTO @table
VALUES (
    '2016-06-15'
    ,8
    ,1
    )
    ,(
    '2016-06-15'
    ,9
    ,1
    )
    ,(
    '2016-06-15'
    ,10
    ,7
    )
    ,(
    '2016-06-16'
    ,8
    ,3
    )
    ,(
    '2016-06-16'
    ,9
    ,3
    )
    ,(
    '2016-06-16'
    ,10
    ,5
    )

SELECT CAST((
            SELECT 2 [@cellpadding]
                ,2 [@cellspacing]
                ,1 [@border]
                ,'background-color: rgb(226, 140, 5)' [@style]
                ,(
                    SELECT th
                    FROM (
                        SELECT 'Day' th

                        UNION ALL

                        SELECT 'Hour' th

                        UNION ALL

                        SELECT 'Val'
                        ) d
                    FOR XML path('')
                        ,type
                    ) tr
                ,(
                    SELECT (
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,[Day]
                            FOR XML path('td')
                                ,type
                            )
                        ,(
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,[Hour]
                            FOR XML path('td')
                                ,type
                            )
                        ,(
                            SELECT 'width:260px;vertical-align:top;background-color: white;' [@style]
                                ,val
                            FOR XML path('td')
                                ,type
                            )
                    FROM (
                        SELECT CASE 
                                WHEN row_number() OVER (
                                        PARTITION BY day ORDER BY day
                                        ) = 1
                                    THEN t.day
                                ELSE NULL
                                END AS day
                            ,t.Hour
                            ,t.val
                        FROM @table t
                        ) data
                    FOR XML path('tr')
                        ,type
                    )
            FOR XML path('table')
                ,type
            ) AS NVARCHAR(MAX))

我已经发布了答案,请检查。我已经发布了答案,请检查。谢谢。当日子一样的时候,我可以如何改变css样式?i、 删除显示为空的列的边框?谢谢。当日子一样的时候,我可以如何改变css样式?i、 e.删除显示为空的列的边框?