2010-11-01 141 views
1

我在SQL Sever 2005中有一個表,其中許多列僅包含NULL或0或0.0。 我想要一個查詢來查找該表中SUM大於0的每一列的名稱,即該表至少包含一行,其值不爲零且大於零。SQL查找表中所有列的SUM大於零的所有列的名稱

謝謝。

+1

你想要哪一個:所有列的名稱,或只是表示所有字段是否爲非空且> 0的行還是行?兩者的答案會有所不同。 :) – 2010-11-01 19:15:11

+0

@djacobson我想要這些列的名稱。我想讓這個查詢工作,假設我不知道表中列的名字。謝謝! – Adam 2010-11-01 19:20:43

+0

這是一個存儲過程還是它必須是內聯查詢? – 2010-11-05 19:52:41

回答

1

最簡單我相信會採取以下語句的輸出並將其作爲腳本運行。

SELECT SELECT COUNT(*), ''' + name + ''' FROM dbo.ATable WHERE ' + name + '> 0' 
FROM sys.columns sc 
WHERE OBJECT_NAME(OBJECT_ID) = 'ATable' 

我不知道了手系統表,但你可以通過查看類型的各個列的排除不是任何一個數字。如果我沒有弄錯,你可以加入sys.types

如果你需要一個通用的解決方案,它可以concot一個動態語句傳遞給execsql,但這將是矯枉過正的一次性修復。

+0

我想通過JDBC定期運行此查詢。所以我不確定我該如何執行這個腳本。 – Adam 2010-11-01 19:34:34

+0

如果它總是一張表,則創建一個硬編碼的存儲過程,定期向您發送結果。我想知道你的用例。也許如果你解釋一下,我們可以提出更好的選擇。 – 2010-11-01 19:47:33

+0

@Lieven我有一個下拉列表,讓用戶從表中選擇使用哪一列。我想要一個查詢來填充下拉列表。 由於可能添加或刪除了新列,因此有必要查詢以找出列的全部內容。另外我想從列表中刪除所有沒有數據的列名。 – Adam 2010-11-01 19:51:59

相關問題