Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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_Select_Subquery_Sql Subselect - Fatal编程技术网

SQL:在“选择为子查询”中选择

SQL:在“选择为子查询”中选择,sql,sql-server,select,subquery,sql-subselect,Sql,Sql Server,Select,Subquery,Sql Subselect,我有以下声明: select product_name as ShortestLength = (select top 1 product_name, len(fact_name) Value_Length from table order by Value_Length, fact_name ASC) select 'P

我有以下声明:

select 
    product_name as ShortestLength = (select top 1 product_name, len(fact_name) Value_Length 
                                      from table 
                                      order by Value_Length, fact_name ASC)
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end) * 100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount
from 
    table
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end)*100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount,
(select top 1 product_name from table order by Value_Length, fact_name ASC) as ShortestLength 
from table
返回此输出:

shortestlength
PS
我想将此结果添加到另一个select语句中:

select 
    product_name as ShortestLength = (select top 1 product_name, len(fact_name) Value_Length 
                                      from table 
                                      order by Value_Length, fact_name ASC)
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end) * 100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount
from 
    table
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end)*100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount,
(select top 1 product_name from table order by Value_Length, fact_name ASC) as ShortestLength 
from table
因此,结果将是:

列名 pctmissing 总数 唯一计数 最短长度 产品 5.100 181186 15 附言
您可以使用条件聚合:

select 'Product' as Column_Name,
        avg(case when t.product is null then 1.000 else 0 end)*100 as PctMissing,
        count(t.product) as TotalCount,
        count(distinct t.product) as UniqueCount,
        max(case when seqnum = 1 then product_name end) as shortest_length
from (select t.*,
             row_number() over (order by len(fact_name), fact_name) as seqnum
      from table t 
     ) t

这假设两个
引用实际上是同一个表。

您可以使用第一个查询作为子查询,而不是select语句中的列:

select 
    product_name as ShortestLength = (select top 1 product_name, len(fact_name) Value_Length 
                                      from table 
                                      order by Value_Length, fact_name ASC)
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end) * 100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount
from 
    table
select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end)*100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount,
(select top 1 product_name from table order by Value_Length, fact_name ASC) as ShortestLength 
from table

您的第一个查询在语法上看起来不正确。我认为它应该生成一个语法错误。请使用您正在使用的数据库进行标记。
PS
此处是否为productname?