标签: teradata

SQL SELECT多列INTO多变量

我正在将SQL从Teradata转换为SQL Server

在Teradata,他们有格式

SELECT col1, col2
FROM table1
INTO @variable1, @variable2
Run Code Online (Sandbox Code Playgroud)

在SQL Server中,我找到了

SET @variable1 = (
SELECT col1 
FROM table1
);
Run Code Online (Sandbox Code Playgroud)

这只允许每个语句使用一个列/变量.如何使用单个SELECT语句分配2个或更多变量?

sql sql-server teradata

72
推荐指数
2
解决办法
12万
查看次数

什么是ROWS UNBOUNDED PRECEDING用于Teradata?

我刚刚开始使用Teradata,我在Teradata遇到了一个名为"Rows unbounded preceding"的Ordered Analytical Function.我尝试了几个网站来了解这个功能,但是所有这些网站都使用了一个复杂的例子来解释它.能否请你给我一个天真的例子,以便我能清楚地了解基础知识.

sql teradata window-functions

33
推荐指数
2
解决办法
10万
查看次数

在Teradata SQL中查找给定列的哪些行具有不同的值

我试图比较来自相同ID的两个地址,看看它们是否匹配.例如:

Id  Adress Code     Address
1   1               123 Main
1   2               123 Main
2   1               456 Wall
2   2               456 Wall
3   1               789 Right
3   2               100 Left
Run Code Online (Sandbox Code Playgroud)

我只想弄清楚每个ID的地址是否匹配.所以在这种情况下,我想只返回ID 3作为地址代码1和2的不同地址.

sql join rows matching teradata

23
推荐指数
1
解决办法
12万
查看次数

PDO返回空属性名称

我对pdo_odbc和PDO :: FETCH_OBJ(以及PDO :: FETCH_CLASS)有一个奇怪的问题,导致以下错误消息:

PHP Fatal error:  Cannot access empty property
Run Code Online (Sandbox Code Playgroud)

这是代码:

$dbh = new PDO("odbc:FOO");

$sth = $dbh->query("
  SELECT rolename
  FROM dbc.allrolerights
  WHERE databasename = 'BAR'
");

$result = $sth->fetch(PDO::FETCH_OBJ);
Run Code Online (Sandbox Code Playgroud)

作为参考,FOO DSN是使用tdodbc软件包提供的tdata.so驱动程序的Teradata数据源.

我相信这种情况正在发生,因为当PDO调用zend_API.h:object_init_ex()来实例化stdClass对象时,字段名称(从ODBC查询返回)是空白的.如果我切换到PDO :: FETCH_LAZY和var_dump()行,我得到以下内容:

object(PDORow)#3 (2) {
  ["queryString"]=>
  string(95) "
  SELECT rolename
  FROM dbc.allrolerights
  WHERE databasename = 'BAR'
"
  [""]=>
  string(30) "FNAR                          "
}
Run Code Online (Sandbox Code Playgroud)

这似乎支持它.我已经尝试了几种不同的PDO属性组合和一堆不同的角度来解决这个问题.一种解决方案是获取关联数组并将其传递给类构造函数.但是,这对于在幕后直接使用PDO :: FETCH_CLASS的某些框架和ORM不起作用.

我想补充一点,其他fetch方法似乎做对了,例如,PDO :: FETCH_NAMED:

array(1) {
  ["RoleName"]=>
  string(30) "FNAR                          "
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找可以放在PDO dbh或sth定义中的东西,或者用于数据源或驱动程序的odbc.ini或odbcinst.ini来解决此问题.先感谢您.

更新: odbc_fetch_object()(即不是PDO)与完全相同的一切都很好.只是想提一下.显然,PHP,unixODBC或ODBC驱动程序似乎没有任何严重问题.它是PDO代码中的一部分.是时候打开一个错误报告...... 打开了

$dbh = odbc_connect("FOO", NULL, NULL) …
Run Code Online (Sandbox Code Playgroud)

php odbc pdo teradata

22
推荐指数
1
解决办法
1758
查看次数

SQL - 在SELECT中使用多个CASE语句对性能有何影响 - Teradata

所以我有一个查询需要SELECT中的一堆CASE语句.这不是原始设计,而是妥协的一部分.

所以查询看起来像这样:

SELECT
  CONT.TABLE.FINC_ACCT_NM,
  CONT.TABLE.FINC_ACCT_ID,
  CONT.TABLE.CURR_END_OF_PERD_ACTL_VAL,
  CONT.TABLE.PREV_END_OF_PERD_ACTL_VAL,
  CONT.TABLE.VARNC_PLAN_VAL,
  CONT.TABLE.OUTLOOK_BDGT_PLAN_VAL,
  CONT.TABLE.PERD_END_RPT_DT,
  CONT.TABLE.PLAN_VERS_NM,
  CONT.TABLE.FRMT_ACTL_CD,
  CONT.TABLE.FRMT_PLAN_CD,
  CONT.TABLE.RPT_PERD_TYPE_CD,
  CASE 
                WHEN ( CONT.TABLE.FINC_ACCT_ID )=           'XXXX'        and ( CONT.TABLE.BAL_TYPE_CD ) =             'EOP'      then      '  Net Interest Income'  
                WHEN ( CONT.TABLE.FINC_ACCT_ID )=           'XXXX'        and ( CONT.TABLE.BAL_TYPE_CD ) =             'EOP'      then      '  Non Interest Income'
                WHEN ( CONT.TABLE.FINC_ACCT_ID )=           'XXXX'        and ( CONT.TABLE.BAL_TYPE_CD ) =             'EOP'      then      'Non-Interest Expense'
                WHEN ( CONT.TABLE.FINC_ACCT_ID )=           'XXXX'        and ( CONT.TABLE.BAL_TYPE_CD ) =             'EOP'      then      '  Total Marketing Expense'
                WHEN ( CONT.TABLE.FINC_ACCT_ID …
Run Code Online (Sandbox Code Playgroud)

sql performance teradata

17
推荐指数
2
解决办法
3万
查看次数

WHERE和JOIN操作顺序

我的问题类似于这个SQL操作顺序,但有一点点扭曲,所以我认为这是公平的.

我正在使用Teradata.我有2张桌子: table1, table2.

table1只有一id列.
table2有以下栏目:id,val

我可能错了,但我认为这两个陈述给出了相同的结果.

声明1.

SELECT table1.id, table2.val
FROM table1
INNER  JOIN table2
ON table1.id = table2.id
WHERE table2.val<100
Run Code Online (Sandbox Code Playgroud)

声明2.

SELECT table1.id, table3.val
FROM table1
INNER JOIN (
    SELECT *
    FROM table2
    WHERE val<100
)  table3
ON table1.id=table3.id
Run Code Online (Sandbox Code Playgroud)

我的问题是,查询优化器是否足够聪明
- 首先执行WHERE子句然后在语句1中稍后加入
- 知道语句2中实际上不需要表3

我对SQL很新,所以如果我误解了什么,请教育我.

sql teradata

13
推荐指数
1
解决办法
2万
查看次数

数据库中不再有假脱机空间

我正在使用Teradata.在那里我得到'数据库中没有更多的虚拟空间'.我的数据库利用率为85%.此错误与数据库利用率之间是否存在任何关系?任何有关这方面的研究都会对我解决这个问题更有帮助.分享你的想法,以避免这种情况.

database teradata

11
推荐指数
1
解决办法
8万
查看次数

在Python/Pyodbc中查询Teradata的问题

我正在尝试使用PyODBC在Python中查询Teradata数据库.与数据库的连接建立得很好; 但是,当我尝试获取结果时,我遇到了这个错误"无效的文字为十进制:你''".请帮忙.

我在RHEL6上,使用Python 2.7.3

这是代码和结果:

import pyodbc

sql = "select * from table"

pyodbc.pooling = False
cnx = pyodbc.connect("DRIVER={Teradata};DBCNAME=host;DATABASE=database;   AUTHENTICATION=LDAP;UID=user;PWD=password", autocommit=True, ANSI=True)
cursor = cnx.cursor()
rows = cursor.execute(sql).fetchone()
Run Code Online (Sandbox Code Playgroud)
InvalidOperation                          Traceback (most recent call last)
<ipython-input-25-f2a0c81ca0e4> in <module>()
----> 1 test.fetchone()

/usr/local/lib/python2.7/decimal.pyc in __new__(cls, value, context)
    546                     context = getcontext()
    547                 return context._raise_error(ConversionSyntax,
--> 548                                 "Invalid literal for Decimal: %r" % value)
    549 
    550             if m.group('sign') == "-":

/usr/local/lib/python2.7/decimal.pyc in _raise_error(self, condition, explanation, *args)
   3864         # Errors should only be risked …
Run Code Online (Sandbox Code Playgroud)

python teradata

10
推荐指数
1
解决办法
5302
查看次数

如何在c#中设置.net teradata连接?

我想用c#连接到Teradata.我正在使用本网站的示例代码

using System;
using System.Collections.Generic;
using System.Text;
using Teradata.Client.Provider;

namespace Teradata.Client.Provider.HelloWorld
{
    class HelloWorld
    {
        static void Main(string[] args)
        {
            using (TdConnection cn = new TdConnection("Data Source = x;User ID = y;Password = z;"))
            {
                cn.Open();
                TdCommand cmd = cn.CreateCommand();
                cmd.CommandText = "SELECT DATE";
                using (TdDataReader reader = cmd.ExecuteReader())
                {
                    reader.Read();
                    DateTime date = reader.GetDate(0);
                    Console.WriteLine("Teradata Database DATE is {0}", date);
                 }
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

(我也试过DSN , UID , PWD 但是,我的异常,我的用户ID,帐户或密码不正确 ...但我能够轻松地使用SQL助手登录.所以,我排除了不正确的用户ID或密码

在这里,我找到了解决问题的可能方案, 但我不知道在示例代码中需要更改的内容.

所以,我不知道如何实现该解决方案. …

c# teradata

10
推荐指数
1
解决办法
9655
查看次数

使用Teradata模块将Python与Teradata连接

我在Windows 7上安装了python 2.7.0和Teradata模块.我无法从python连接和quyey TD.

__PRE__

现在我想使用Python导入teradata模块并执行如下操作:

  1. 向teradata发送查询并获取结果集.
  2. 检查是否与teradata建立了联系.3.etc ..

请帮我编写代码,因为我是Python新手,并且我没有可用的信息来连接到teradata.

python connection odbc teradata

10
推荐指数
2
解决办法
4万
查看次数