【问题标题】:how to select all not NULL values in from every column... Need LINQ or ADO query?如何从每一列中选择所有非 NULL 值...需要 LINQ 或 ADO 查询?
【发布时间】:2015-07-03 22:38:17
【问题描述】:

请回答这个问题...我正在尝试制作单个表格而不是多个表格

类似的表结构

ID    COL1       COL2      COL3   ...  ...
1     SHIRT      NULL      NULL
2     SKIRT      NULL      NULL
3     TROUSER    NULL      NULL
4     NULL       WINTER    NULL
5     NULL       SUMMER    NULL
6     NULL       AUTUMN    NULL
7     NULL       NULL      NIGHT
8     NULL       NULL      EVENING
9     NULL       NULL      NULL
.     ..         ..        ..

【问题讨论】:

  • 请添加预期结果....
  • 你能把输出贴出来吗?在这里你显示了多列但没有显示任何多个表
  • 我创建了 3 个表,而是创建了一个包含 3 列的表...现在我想要 1 个 select 语句,它给我所有非空值
  • 预期结果会像 ID COL1 COL2 COL3 ... ... 1 衬衫冬夜 2 裙子夏夜 3 裤子 AUTUMN NULL 。
  • SHIRT WINTER 和 NIGHT 排成一排的逻辑是什么?

标签: sql sql-server linq sql-server-2008 linq-to-sql


【解决方案1】:

我们可以通过使用 row_number 、order by 和 Common table Expression 来实现这一点

declare @table table(ID int,Col1 varchar(10),col2 Varchar(10),Col3 Varchar(10))
insert into @table(ID,Col1,col2,col3)values (1,'Shirt',NULL,NULL) ,
(2,'SKIRT',NULL,NULL),(3,'TROUSER',NULL,NULL),(4,NULL,'WINTER',NULL),(5,NULL,'SUMMER',NULL)
,(6,NULL,'AUTUMN ',NULL),(7,NULL,NULL,'NIGHT'),(8,NULL,NULL,'Evening')
;with CTE AS (
select col1,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col1 is not NULL
), CTE1 AS (
select col2,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col2 is not NULL
), CTE2 AS (
select col3,ROW_NUMBER()OVER( ORDER BY (SELECT NULL))R from @table
where Col3 is not NULL
)
select c.col1,cc.col2,ccc.Col3 from CTE C INNER JOIN cte1  CC
ON c.R = cc.R LEFT JOIN CTE2 CCC ON 
CCC.R = C.R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2020-07-06
    • 2020-05-03
    相关资源
    最近更新 更多