如何从SQL Server中的水平数据中检索数字?

时间:2017-04-24 11:28:54

标签: sql sql-server tsql sql-server-2012

下面是我的名为" temp_table"在SQL中,我想获取事务的数据no column_3是" CASH AED"

当前数据:

Transaction No       Column_1 Column_2 Column_3    Price
   1234               NULL      NULL   NULL         0
   1234                0        NULL   NULL         0
   1234               NULL      0      NULL         0
   1234               NULL      NULL   Cash AED     0
   1234               NULL      NULL   NULL         0    
   1234               NULL      NULL   NULL         15
   1234               NULL      NULL   NULL         0
   1234               NULL      NULL   Cash AED     0
   1234               NULL      NULL   NULL         0    
   1234               NULL      NULL   NULL         0
   1234               NULL      NULL   NULL         0
   1222               NULL      NULL   NULL         0 
   1222                0        NULL   NULL         0
   1222               NULL      0      NULL         0
   1222               NULL      NULL   Cash AED     0
   1222               NULL      NULL   NULL         0    
   1222               NULL      NULL   NULL         25
   1222               NULL      NULL   NULL         0
   1222               NULL      NULL   Cash AED     0
   1222               NULL      NULL   NULL         0    
   1222               NULL      NULL   NULL         0
   1222               NULL      NULL   NULL         0

期望的输出:

Transaction No        Column_3   Price
   1234               Cash AED   15
   1222               Cash AED   25

请记住同一笔交易,在column_3中输入值" Cash AED"重复。

3 个答案:

答案 0 :(得分:2)

嗯。嗯。 。 。

select distinct transaction_no, column_3
from t
where column_3 = 'Cash AED';

这真的是你想要的吗?

编辑:

使用price,您可以使用聚合:

select transaction_no, column_3, max(price) as price
from t
where column_3 = 'Cash AED'
group by transaction_no, column_3;

这适用于您提供的数据。

答案 1 :(得分:1)

使用DISTINCT SELECT子句:

  SELECT DISTINCT TransactionNo , Column_3
  FROM yourtableName
  WHERE Column_3 = 'Cash AED'

答案 2 :(得分:1)

描述并不完全清楚,但这应该提供所需的输出:

SELECT [Transaction No], MAX(Column_3) AS Column_3, MAX(Price) AS Price
FROM temp_table GROUP BY [Transaction No] ORDER BY [Transaction No]