1

我有一个数据库问题,我不知道如何编码,所以任何形式的帮助都将不胜感激。

基本上它是匹配不同的时间表及其相应的价格。

我有两个疑问。. .

第一个查询包含基于高峰时间(一天中的 7 到 22 小时)或非高峰时间(一天中的所有其他时间)的价格

SQLQuery1.sql 
dte          Peak          Offpeak
3-23-2015    32.6          17.12
3-24-2015    34.98         17.21
3-25-2015    31.87         19.45

第二个查询每小时包含不同的值

WP-Schedule.sql
CPT         Resource      1    2    3    4    5    6    7    8  . . . 24
3-23-2015   WP1         -34  -34  -37  -29  -17    0  -23   -3        25
3-23-2015   WP2         -36  -35  -36  -31  -19   14   15    0        34
3-23-2015   WP3         -34  -34  -35  -31  -18   18   19    3        31
3-24-2015   WP1         -32  -32  -32  -34  -19   15   21    0        30
3-24-2015   WP2         -34  -32  -29  -32  -20   21   23    4        18
3-24-2015   WP3         -36  -35  -36  -31  -19   14   15    0        34
3-25-2015   WP1         -34  -34  -37  -29  -17    0   23    0        25
3-25-2015   WP2         -32  -32  -32  -34  -19   15   21    0        30
3-25-2015   WP3         -34  -32  -29  -32  -20   21   23    16       18

我试图对这两个查询执行的操作是使用这些信息创建一个新查询,该查询每小时向我显示每种资源的价格。WP-Schedule.sql条件是,如果查询中的值小于 0,则每小时只收取费用。此外,如果该小时是高峰时段,则应使用当天的高峰价格,如果不是,则使用非高峰价格。

如果我要手动创建第一行应该是这样的:

dte/CPT    Resource   1     2      3      4      5      6    7    8 . . . 24
3-23-2015  WP1     17.12  17.12  17.12  17.12   17.12   0  32.6 32.6       0

对此编码的帮助将不胜感激!!!!

4

1 回答 1

2

一种方法是使用 24 个 CASE 表达式。

SELECT ...
...
CASE WHEN s.[1] < 0 THEN p.OffPeak ELSE 0 END AS [1],
...
CASE WHEN s.[7] < 0 THEN p.Peak ELSE 0 END AS [7],
...
FROM (YourFirstQuery) p
JOIN (YourSecondQuery) s
  ON p.dte=s.CPT
于 2017-07-10T14:54:33.763 回答