我有一个表A,它可以为DES和ARR列提供不同的值(不同的行数),例如
DES ARR
D B
C E
U M
R D (values in 4 rows)
OR
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
如果我不断更改RN编号(RN = 1,2,3),上面的查询给出了DES和ARR的值, 但是我不知道表中实际填充了多少行,所以我不能使用RN 有效地从每一行获取DES和ARR值
如何找出使用tSQL查询表A中有多少行在DES和ARR列中有值? 在找到其中包含DES和ARR值的行总数后, 如何从DES和ARR填充的每一行中找到DES和ARR的值 值? 我可以更改上面的查询以生成我需要的结果吗?
答案 0 :(得分:0)
您的问题令人困惑,但您是否尝试过使用count(1)或count(*)来查找表格中的行数。
如果要查找表中的非空值数,请使用
select count(column_name)
from table_name
这应该是你想要的。
答案 1 :(得分: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
答案 2 :(得分: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