相关疑难解决方法(0)

生成随机SQL Server 2008时间测试数据

我正在尝试生成一个包含SQL Server 2008中的时间数据类型的大型数据集.我已经在表中有一些非时间数据,所以我想将整个过程保留在T-SQL中并使用insert-into-选择从一个表中获取部分数据并将其与包含时间的一些生成数据一起插入到下一个表中.

我想要一种在两点之间产生随机时间(7)的方法,比如在8:00到9:00之间的随机时间.我发现了一些2008年之前的帖子,但没有解决SQL Server 2008的时间类型问题.

sql sql-server sql-server-2008 random-time-generation

7
推荐指数
2
解决办法
5289
查看次数

SQL:从两个历史表构建时间轴的最佳方法

考虑以下内容:

CREATE TABLE Members (MemberID INT)
INSERT Members VALUES (1001)

CREATE TABLE PCPs (PCPID INT)
INSERT PCPs VALUES (231)
INSERT PCPs VALUES (327)
INSERT PCPs VALUES (390)

CREATE TABLE Plans (PlanID INT)
INSERT Plans VALUES (555)
INSERT Plans VALUES (762)

CREATE TABLE MemberPCP (
    MemberID INT
    , PCP INT
    , StartDate DATETIME
    , EndDate DATETIME)
INSERT MemberPCP VALUES (1001, 231, '2002-01-01', '2002-06-30')
INSERT MemberPCP VALUES (1001, 327, '2002-07-01', '2003-05-31')
INSERT MemberPCP VALUES (1001, 390, '2003-06-01', '2003-12-31')

CREATE TABLE MemberPlans ( …
Run Code Online (Sandbox Code Playgroud)

sql t-sql

7
推荐指数
1
解决办法
4390
查看次数

生成连续日期的sql临时表到左外连接到

我有一个数据表,我想通过存储过程选择出来,这样用户可以将MS excel前端连接到它并使用原始数据作为图形来源.

表的原始数据的问题是日期中存在间隙,因为如果给定日期没有数据(没有该日期的记录),那么当用户尝试绘制它时会产生问题.

我想要将我的存储过程更新到左外连接到临时表的日期,以便右侧将作为空值进入,我可以转换为零,以便他们具有简单的绘图体验.

如何在开始日期和结束日期之间最好地生成一个日期字段表?

sql sql-server-2005

6
推荐指数
3
解决办法
7108
查看次数

优化SQL Server上的数字表创建?

运行SQL Server Express 2008.我为某些实用程序功能创建了"数字表".由于表填充是自动构建的一部分,因此每次部署时都会花费过多的时间.

冒着"过度优化"的风险,有人可以评论我如何能够尽快实现这一目标吗?也许玩索引填充因子或创建PK时?

IF EXISTS (SELECT *  FROM dbo.sysobjects 
WHERE id = OBJECT_ID(N'Numbers') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
drop TABLE [Numbers]
end

CREATE TABLE [Numbers]
(
      [Number] [int]
    , CONSTRAINT [Index_Numbers] PRIMARY KEY CLUSTERED
        (
            [number] ASC
        ) ON [PRIMARY]
) 
ON [PRIMARY]
Declare @cnt int
Select @cnt=0
SET NOCOUNT ON
while (@cnt<10000)
BEGIN
INSERT INTO NUMBERS(NUMBER) SELECT @cnt
SELECT @cnt=@cnt+1

end
Run Code Online (Sandbox Code Playgroud)

insert sql-server-2008

6
推荐指数
2
解决办法
2135
查看次数

t-sql根据字段值返回多行

我试图在仅允许t-sql的系统上运行导出。我知道足够多的php来进行foreach循环,但是我不太了解t-sql来生成给定数量的多行。我需要一个结果来列出具有“ 1 of 4”的项目列表,例如结果中包含的数据

给像这样的桌子

orderid, product, quantity
1000,ball,3
1001,bike,4
1002,hat,2
Run Code Online (Sandbox Code Playgroud)

我如何获得选择查询结果,例如:

orderid,item_num,total_items,产品

1000、1、3,球

1000、2、3,球

1000、3、3,球

1001,1,4,自行车

1001,2,4,自行车

1001、3、4,自行车

1001、4、4,自行车

1002,1,2,帽子

1002,2,2,帽子

t-sql

5
推荐指数
1
解决办法
2996
查看次数

一天中的所有时段

在我的SQL查询中,我计算每天每小时的订单数量.我的查询看起来像这样:

SELECT   COUNT(dbo.Uputa.ID),{ fn HOUR(dbo.Orders.Date) } AS Hour
FROM      Orders       
WHERE dbo.Orders.Date BETWEEN '2011-05-01' AND '2011-05-26' 
GROUP BY { fn HOUR(dbo.Orders.Date) }
ORDER BY Hour
Run Code Online (Sandbox Code Playgroud)

我的问题是查询只返回dbo.Orders.Date中的现有小时数.
例如:

Number   Hour
12         3
12         5
Run Code Online (Sandbox Code Playgroud)

我想像这样返回所有时间:

 Number      Hour
    0          0
    0          1
    0          2
    12         3
    0          4
    12         5
   ...
    0          23
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何做到这一点?

sql t-sql sql-server

5
推荐指数
1
解决办法
7136
查看次数

SQL Server递归CTE是否被视为循环?

我的印象是递归CTE是基于设置的,但在最近的SO帖子中,有人提到它们是循环.

是否基于递归CTE设置?假设基于集合的操作不能成为循环,我错了吗?

sql-server common-table-expression

5
推荐指数
1
解决办法
708
查看次数

SQL Server相当于Oracle CONNECT BY和LEVEL伪列

请帮助将Oracle查询转换为等效的SQL Server:

SELECT (LEVEL+1-1) AS lvl 
  FROM dual
CONNECT BY LEVEL <= 10
/
Run Code Online (Sandbox Code Playgroud)

输出是1到10之间的数字:

LVL
----
1
2
3
...
10
Run Code Online (Sandbox Code Playgroud)

我知道SQL Server中有层次结构方法,内置插件GetLevel等等.这可以用来得到相同的结果吗?

如果需要(不确定)创建双表 - 从这里复制:http://blog.sqlauthority.com/2010/07/20/sql-server-select-from-dual-dual-equivalent/

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO
Run Code Online (Sandbox Code Playgroud)

专门寻找可以使用smth的例子.像查询中的LEVEL一样.例如:表格中只有一个开始日期 - 2013年4月22日.但是使用LEVEL我可以按如下方式增加它:

SELECT start_date, start_date+LEVEL-1 AS start_date_btwn
  FROM my_tab
 WHERE id = 1
CONNECT BY LEVEL<=10
/

START_DATE    START_DATE_BTWN
------------------------------
4/22/2013    4/22/2013
4/22/2013    4/23/2013
4/22/2013    4/24/2013
4/22/2013    4/25/2013
......
4/22/2013    4/30/2013
Run Code Online (Sandbox Code Playgroud)

非常感谢所有人提前.

sql sql-server oracle

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

在SQL查询中循环?

我有查询,我在哪里调用函数 StoreFlowsByDates

select
  sum(a.beglocalamount+a.localamount)
from
 StoreFlowsByDates(ib_encodedate(EXTRACT(YEAR FROM CURRENT_DATE),1 ,1), ib_encodedate(EXTRACT(YEAR FROM CURRENT_DATE), 12 ,31), '', '', '', '', '', '', '', 'N', 'N', 'N', 'N', '1000000101', '') a
Run Code Online (Sandbox Code Playgroud)

此函数在选定的时间段内返回值.我需要编辑此查询以返回一年中每个月的值.就像是:

select
  sum(a.beglocalamount+a.localamount),
  [SELECTED_MONTH]
from
 StoreFlowsByDates(ib_encodedate(EXTRACT(YEAR FROM CURRENT_DATE),[SELECTED_MONTH] ,1), ib_encodedate(EXTRACT(YEAR FROM CURRENT_DATE), [SELECTED_MONTH] ,31), '', '', '', '', '', '', '', 'N', 'N', 'N', 'N', '1000000101', '') a
group by
[SELECTED_MONTH]
Run Code Online (Sandbox Code Playgroud)

但是从1到12的周期.这样的事情甚至可能吗?

sql firebird cycle series

4
推荐指数
1
解决办法
1617
查看次数

在 SQL Server 中水平连接两个以上的表

以下是架构

+---------+---------+
| Employee Table    |
+---------+---------+
| EmpId   | Name    | 
+---------+---------+
| 1       | John    |
| 2       | Lisa    |
| 3       | Mike    |
|         |         |
+---------+---------+

+---------+-----------------+
| Family   Table            |
+---------+-----------------+
| EmpId   | Relationship    | 
+---------+-----------------+
| 1       | Father          |
| 1       | Mother          |
| 1       | Wife            |
| 2       | Husband         |
| 2       | Child           |
+---------+-----------------+

+---------+---------+
| Loan  Table       |
+---------+--------+
| LoanId  | EmpId …
Run Code Online (Sandbox Code Playgroud)

sql t-sql outer-join sql-server-2008

4
推荐指数
1
解决办法
7428
查看次数