Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 无聚合函数的旋转_Sql_Sql Server_Pivot_Aggregate Functions - Fatal编程技术网

Sql 无聚合函数的旋转

Sql 无聚合函数的旋转,sql,sql-server,pivot,aggregate-functions,Sql,Sql Server,Pivot,Aggregate Functions,是否可以从透视查询中删除聚合函数 我对此查询有问题,因为如果我有相同生日的员工,则只会显示第一个 SELECT * FROM ( SELECT lastname +' '+ firstname as name, Birthdate, CASE WHEN DATEPART(yyyy,Birthdate) BETWEEN 1930 AND 1939 THEN 1930 WHEN DATEPART(yyyy,Birthdate) BETWEEN 19

是否可以从透视查询中删除聚合函数

我对此查询有问题,因为如果我有相同生日的员工,则只会显示第一个

SELECT * 
FROM ( SELECT lastname +' '+ firstname as name, Birthdate, 
        CASE
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1930 AND 1939 THEN 1930
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1940 AND 1949 THEN 1940
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1950 AND 1959 THEN 1950
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1960 AND 1969 THEN 1960
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1970 AND 1979 THEN 1970
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1980 AND 1989 THEN 1980
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 1990 AND 1999 THEN 1990
        WHEN DATEPART(yyyy,Birthdate) BETWEEN 2000 AND 2009 THEN 2000
        ELSE DATEPART(yyyy,Birthdate) END as [BDate] FROM ADR_Address 

) as s
PIVOT
(
    MAX(name)
    FOR [BDate] IN ([1930],[1940],[1950],[1960],[1970],[1980],[1990],[2000])
)AS pvt
WHERE Birthdate IS NOT NULL ORDER BY Birthdate

如果我对代码理解正确,您可以在数据透视行中添加另一个分隔符,例如行号。因此,在数据透视行上,您将使用Birthdays+原始行号,而不是Birthdays

通过这种方式,您可以从技术上显示所有名称,但这种轴心仍然很奇怪:

SELECT * 
FROM ( SELECT lastname +' '+ firstname as name, Birthdate, 
    CASE
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1930 AND 1939 THEN 1930
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1940 AND 1949 THEN 1940
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1950 AND 1959 THEN 1950
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1960 AND 1969 THEN 1960
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1970 AND 1979 THEN 1970
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1980 AND 1989 THEN 1980
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 1990 AND 1999 THEN 1990
    WHEN DATEPART(yyyy,Birthdate) BETWEEN 2000 AND 2009 THEN 2000
    ELSE DATEPART(yyyy,Birthdate) END as [BDate]
    ,ROW_NUMBER() OVER (ORDER BY lastname +' '+ firstname) AS rn FROM ADR_Address 
) as s
PIVOT
(
    MAX(name)
    FOR [BDate] IN ([1930],[1940],[1950],[1960],[1970],[1980],[1990],[2000])
)AS pvt
WHERE Birthdate IS NOT NULL ORDER BY Birthdate

只需更改查询的这一部分:

SELECT  lastname +' '+ firstname as name,
        Birthdate,
        ...
关于这一点:

SELECT  lastname +' '+ firstname as name,
        Birthdate,
        ROW_NUMBER() OVER (ORDER BY Birthdate) as rn,
        ...

你能添加一些样本数据吗?还有一个提示:如果您使用DATEPARTyyyy,Birthdate/10*10,您不需要完整的案例陈述,而且当新的生日出现时,您也不需要添加到案例中。您希望得到什么结果?@user2210516 Y您没有投票权或接受答案吗?
SELECT  lastname +' '+ firstname as name,
        Birthdate,
        ROW_NUMBER() OVER (ORDER BY Birthdate) as rn,
        ...