-1

我有一个表 A 可以为 DES 和 ARR 列提供不同的值(不同的行数),例如

DES  ARR

D    B
C    E
U    M
R    D                  (values in 4 rows)

或者

DES  ARR

E   M
G   H                  (values in only 2 rows)

我写了这个查询写在下面

declare @A varchar(500),
declare @B varchar(500);
With B as (
Select DES as D, 
row number() partition over (Order by C) as RN
ARR as AR
from A)
Select  @A = D,
        @B = AR
from B
where RN = 1

上面的查询为我提供了 DES 和 ARR 的值,如果我不断更改 RN 编号 (RN =1, 2,3),但我不知道表中实际填充了多少行,所以我无法有效地使用 RN 来获取每行的 DES 和 ARR 值

如何使用 tSQL 查询找出表 A 中有多少行在 DES 和 ARR 列中有值?在找出其中包含 DES 和 ARR 值的行总数之后,如何从填充有 DES 和 ARR 值的每一行中找到 DES 和 ARR 的值?我可以更改上面的查询以产生我需要的结果吗?

4

3 回答 3

0

计数是重要的还是只处理每一行中的值?

您是否考虑过使用游标?

DECLARE @A varchar(500), @B varchar(500)
DECLARE db_cursor CURSOR FOR  
SELECT DES, ARR 
FROM A
ORDER BY C

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @A, @B  

WHILE @@FETCH_STATUS = 0   
BEGIN   
       -- Do whatever you want with @A and @B Here 

       FETCH NEXT FROM db_cursor INTO @A, @B 
END   

CLOSE db_cursor   
DEALLOCATE db_cursor 
于 2012-04-10T02:17:54.347 回答
0

您的问题令人困惑,但是您是否尝试过使用 count(1) 或 count(*) 来查找表中的行数。

如果要找出表中非空值的数量,请使用

select count(column_name)
  from table_name

这应该给你正在寻找的东西。

于 2012-04-10T01:38:59.877 回答
0

您的问题令人困惑,但我可以根据您所说的提出几个问题:

如何使用 tSQL 查询找出表 A 中有多少行在 DES 和 ARR 列中有值?

尝试这个:

SELECT COUNT(*) AS num_rows
FROM A
WHERE DES IS NOT NULL AND ARR IS NOT NULL

然后你问:

在找出其中包含 DES 和 ARR 值的行总数之后,如何从填充有 DES 和 ARR 值的每一行中找到 DES 和 ARR 的值?

这是你要找的吗?

SELECT * FROM A
WHERE DES IS NOT NULL AND ARR IS NOT NULL
于 2012-04-10T02:31:51.033 回答