[英]teradata case when issue
我有以下查詢,它們應該給出相同的結果,但是卻大不相同1。
select count(*)
from qigq_sess_parse_2
where str_vendor = 'natural search' and str_category is null and destntn_url = 'http://XXXX.com';
create table qigq_test1 as ( select case when (str_vendor = 'natural search' and str_category is null and destntn_url = 'http://XXXX.com' ) then 1 else 0 end as m from qigq_sess_parse_2 ) with data; select count(*) from qigq_test1 where m = 1;
第一個塊的總數為132868,而第二個塊的總數為1。
查詢中導致此差異的細微部分是什么?
謝謝
在Teradata中創建表時,可以將其指定為SET
或MULTISET
。 如果未指定,則默認為SET
。 集合表不能包含重復項。 因此,新表最多將包含兩行,即0和1,因為這一切都可以來自case語句。
編輯:經過更多的挖掘后,默認值不是那么簡單。 但是無論如何,我懷疑如果將MULTISET選項添加到create語句中,則會看到預期的行為。
我的猜測是您的Create Table
語句僅提取符合以下Count
語句參數的一行數據。 嘗試以下方法:
CREATE TABLE qigq_test1 (m integer);
INSERT INTO qigq_test1
SELECT
CASE
WHEN (str_vendor = 'natural search' and str_category IS NULL AND destntn_url = 'http://XXXX.com' ) THEN 1
ELSE 0
END AS m
FROM qigq_sess_parse_2;
SELECT COUNT(*) FROM qigq_test1 WHERE m = 1;
這應將所有數據行從qigq_sess_parse_2
入qigq_test1
作為0或1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.